如何查看DB2表结构

如何查看DB2表结构,db2,Db2,如何查看DB2数据库中的表结构以获取所有表:(您可能希望将模式限制为您的模式) 获取所有列:(其中tabname=您的_tabname) 一般来说,它最容易用以描述 DESCRIBE TABLE MYSCHEMA.TABLE 或 等等 请参阅文档: 我从sysibm.syscolumns Select distinct(name), ColType, Length from Sysibm.syscolumns where tbname = 'employee'; 按照以下简单步骤操作: 选择

如何查看DB2数据库中的表结构以获取所有表:(您可能希望将模式限制为您的模式)

获取所有列:(其中tabname=您的_tabname)


一般来说,它最容易用以描述

DESCRIBE TABLE MYSCHEMA.TABLE

等等

请参阅文档:

我从
sysibm.syscolumns

Select distinct(name), ColType, Length from Sysibm.syscolumns where tbname = 'employee';

按照以下简单步骤操作:

  • 选择浏览器窗口
  • 提取(扩展)它
  • 选择并提取(展开)表列表
  • 选择所需的表并将其提取(展开)
  • 双击“代码”选项时,将打开表结构

  • 在DB2中,在DB2命令提示符下输入

      db2  =>  describe  table MyTableName
    
    iSeries(as400)db2的php示例,是的,这很有效

    $i5 = db2_connect($database, $user, $password, array("i5_lib"=>"qsys2"));
    
    $querydesc = "select * from qsys2.syscolumns where table_schema = '".$library."' and table_name = '".$table_name."' ";
    
    $result = db2_exec($i5, $querydesc);
    
    另外,如果您只想列出所有表及其说明

    $query = "select TABLE_NAME, TABLE_TEXT from systables where table_schema = '$library' ";
    
    $result = db2_exec($i5, $query);
    

    此外,以下命令也起作用:

    describe SELECT * FROM table_name;
    

    其中select语句可以替换为任何其他select语句,这对于使用select进行复杂插入非常有用

    控制中心已经具备了这个功能。就在桌子的下面


    使用以下选项检查单个表格的表格说明

    DESCRIBE TABLE Schema Name.Table Name
    
    联接以下表格若要检查多个表格的表格说明,请使用表格id联接 syscat.tables和syscat.columns

    您还可以使用下面的命令检查表上索引的详细信息
    描述表的索引。显示细节

    许多人已经提到的最简单的方法是创建一个描述表

    不过,你也可以从网站上获得一些相同的+附加信息

    db2> SELECT * SYSCAT.TABLES
    
    db2> SELECT * FROM SYSCAT.COLUMNS
    
    我通常使用SYSCAT.COLUMNS查找数据库中我已经知道列名的相关表:)

    如果要获取特定表或整个数据库的DDL,另一个好方法是使用db2look

    # db2look -d *dbname* -t *tablename* > tablestructure.out
    
    这将为您生成包含特定表的DDL脚本的“.out”文件

    # db2look -d *dbname* -e > dbstructure.out
    
    这将作为单个脚本文件生成整个数据库的DDL,通常用于复制数据库,“-e”表示要导出DDL,并在新数据库中重新创建完全相同的设置


    希望这能帮助寻找此类答案的人:)

    1.使用db2描述表

      db2 describe table tabschema.tabname
    
    2.使用db2描述输出

      db2 "describe select * from tabschema.tabname"
    
    3.使用db2look实用程序

      db2look -d dbname -e -t tabname
    
    4.在db2 syscat中查找行

      db2 "Select * from syscat.columns wher tabname='' and tabschema =''"
    

    我正在运行DB2/LINUXX8664 10.5.3和
    descripe select*fromschema\u name.table\u name
    对我很有用

    但是,
    descripe table schema\u name。table\u name
    失败,出现以下错误:

    SQL0100W未找到用于获取、更新或删除的行;或者是一场灾难的结果
    
    查询是一个空表。SQLSTATE=02000

    您可以使用此查询获取表元数据

    SELECT * FROM SYSIBM.COLUMNS WHERE TABLE_NAME = 'ASTPCLTEXT';
    

    如果您使用的是Aqua Data studio,只需从表名称中写入select*,而不是按execute,按ctrl+D即可


    您应该能够看到我使用的Aquadata Studio 12.0.23表格的说明,它比最新版本少了几个版本。所以你的经验可能比我的好。我发现获得概述的最好方法是使用ERD生成器。这花了几个小时,因为标准化在近30年前还不是数据库设计中使用的概念。
    drop view lawmod9t.vdesc
    
    create view lawmod9t.vDesc as select 
           upper(t.table_cat) as Catalog, 
           upper(t.table_schem) as Schema, 
           upper(t.table_name) as table, 
           t.table_text as tableDesc, 
           c.system_column_name as colname_short, 
           c.column_name as colname_long, 
           c.column_text as coldesc, 
           c.Type_Name as type, 
           c.column_Size as size
    from sysibm.SQLColumns c
    inner join sysibm.sqltables t
    on c.table_schem = t.table_schem
    and c.table_name = t.table_name
    
    select * from vdesc where table = 'YPPPOPL'
    

    我能够在几个小时内获得所有对象的定义,每个对象都有一个文件。

    对于IBM DB2 10.7版本中的表描述,我尝试了这个方法,效果很好

    SELECT NAME,COLTYPE,NULLS,LONGLENGTH FROM SYSIBM.SYSCOLUMNS where TBcreator =SCHEMANAME and TBNAME =TABLENAME;
    

    OP没有提到这是否是正在讨论的DB2/400,但我发现获得包含列名描述的表结构的唯一方法是使用DSPFFD

    DSPFFD文件(TBNAME)输出(*OUTFILE)OUTFILE(SOMELIB/TBDESC)

    这会将TBNAME的描述放入SOMELIB库中名为TBDESC的表中。然后,您可以通过以下方式查询:

    从SOMELIB/TBDESC中选择*

    如何查看db2数据库中的表结构

    打开
    db2
    command窗口,使用以下命令连接到db2

    > db2 connect to DATABASE_NAME USER USERNAME USING PASSWORD
    
    成功连接后,发出以下命令以查看表结构

    > db2 "describe select * from SCHEMA_NAME.TABLE_NAME"
    
    上面的命令将以表格格式显示db2表结构


    注意:在DB2客户机9.7.11上测试时,我无法得到上述结果。感谢您的回答。但我无法得到结果你在用什么平台?根据您的评论,我怀疑可能是zOS。我尝试执行descripe TABLE语句,但出现错误:11:42:25[descripe-0行,0.000秒][错误代码:-104,SQL状态:42601]在“descripe”之后发现意外标记“TABLE”。预期的令牌可能包括:“加入”。。SQLCODE=-104,SQLSTATE=42601,DRIVER=4.13.127。。。执行1条语句,影响0行,执行/获取时间:0.000/0.000秒[0成功,0警告,1错误]我正在DBVisualizer上运行此操作。请注意IBM DB2没有响应此查询!它说-Error:db2103e该命令对于这个DB2数据库服务器无效。@这里描述的是DB2命令而不是sql语句。如果您正在通过ibm_studio进行尝试,您将遇到此错误,它可能因版本而异。我们正在运行V7R1,表是SYSIBM.COLUMNS
    。此外,列也不同,因此我使用
    DSPFFD文件(SYSIBM/columns)
    查找添加了“order by COLNO”的正确列,因为输出顺序与实际列顺序不同。从Sysibm.syscolumns中选择distinct(name)、COLNO、ColType、Length,其中tbname='EMPLOYEE'顺序由COLNOThis在V7R1上为我工作,并为特定库进行选择:从Sysibm/COLUMNS中选择列名称、数据类型、字符最大长度、数字精度,其中tbname='TABLE'和TABLE_SCHEMA='library';表名对我来说是区分大小写的。唯一的方法是什么?哇!需要有人进一步深入研究SQL;-)尝试前面答案中的一些建议;诚然,有些将无法在DB2forIBMi上运行。主要是因为
    SELECT NAME,COLTYPE,NULLS,LONGLENGTH FROM SYSIBM.SYSCOLUMNS where TBcreator =SCHEMANAME and TBNAME =TABLENAME;
    
    > db2 connect to DATABASE_NAME USER USERNAME USING PASSWORD
    
    > db2 "describe select * from SCHEMA_NAME.TABLE_NAME"