如何查看DB2表结构

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

我从sysibm.syscolumns得到了答案

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

一般来说,使用DESCRIBE是最简单的。

 DESCRIBE TABLE MYSCHEMA.TABLE 

要么

 DESCRIBE INDEXES FOR MYSCHEMA.TABLE SHOW DETAIL 

等等

请参阅文档: DESCRIBE命令

另外下面的命令工作:

 describe SELECT * FROM table_name; 

select语句可以被任何其他select语句replace,这对于复杂的select语句是非常有用的。

在DB2中,在db2命令提示符处input。

  db2 => describe table MyTableName 

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 =''" 

对于IBM DB2 10.7版本中的表描述,我尝试了这个,并且工作得很好

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

用于iSeries(as400)的php示例db2,是的,这工作!

 $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); 

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

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

得到所有的表:(你可能想限制模式到你的模式)

 select * from syscat.tables 

获取所有列:(其中tabname = your_tabname)

 select * from syscat.columns 

使用下面的内容来检查单个表格的表格描述

 DESCRIBE TABLE Schema Name.Table Name 

join下面的表来检查多个表的表格描述,join表格ID syscat.tables和syscat.columns

您还可以使用下面的命令describe tables for table来检查表上索引的详细信息。 查看详细

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

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

 > db2 connect to DATABASE_NAME USER USERNAME USING PASSWORD 

一旦连接成功,发出以下命令查看表结构。

 > db2 "describe select * from SCHEMA_NAME.TABLE_NAME" 

上述命令将以表格格式显示db2表结构。

注意:在DB2客户机9.7.11上testing

控制中心已经有了这个function。 这只是在表下面。

在这里输入图像说明

已经提到的最简单的方法就是做一个DESCRIBE TABLE

但是,你也可以从一些相同的+额外的信息

 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适合在一个新的数据库中重新创build完全相同的设置。

希望这可以帮助别人寻找这样的答案:)

我正在运行DB2 / LINUXX8664 10.5.3,并describe select * from schema_name.table_name适用于我。

但是, describe table schema_name.table_name失败并出现此错误:

SQL0100W No row was found for FETCH, UPDATE or DELETE; or the result of a query is an empty table. SQLSTATE=02000

如果您使用的是Aqua Data Studio,只需在table_name中写入select *,而不是按下execute,按Ctrl + D。

您将能够看到表格的描述

 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' 

我正在使用Aquadata Studio 12.0.23,它是最新的几个版本。 所以你的经验可能比我的好。 我发现最好的方法是使用ERD生成器。 花了几个小时,因为规范化不是几乎30年前这个数据库devise中使用的一个概念。 我能够在几个小时内获得所有对象的定义,每个对象都有一个文件。

OP没有提到是否讨论了DB2 / 400,但是我发现唯一可以得到包括列名描述的表结构的方法是使用DSPFFD。

DSPFFD FILE(TBNAME) OUTPUT(*OUTFILE) OUTFILE(SOMELIB/TBDESC)

这将TBNAME的描述放在SOMELIB库中的名为TBDESC的表中。 然后你可以用下面的方法查询:

select * from SOMELIB/TBDESC

遵循这个简单的步骤:

  1. select浏览器窗口。
  2. 提取(展开)它。
  3. select并提取(展开)表格列表。
  4. select所需的表并提取(展开)它。
  5. 双击代码选项,它打开表结构。