如何查看DB2表结构

53

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

22个回答

68

我从 sysibm.syscolumns 获取了答案。

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

4
似乎不同版本可能会有所不同。我们正在运行V7R1,并使用SYSIBM.COLUMNS表格。由于列也不同,所以我使用了DSPFFD FILE(SYSIBM/COLUMNS)来查找正确的列。 - Piro
2
添加了“order by COLNO”,因为输出顺序与实际列顺序不同。选择distinct(name),COLNO,ColType,Length from Sysibm.syscolumns where tbname ='EMPLOYEE' order by COLNO - devXen
这个在V7R1上对我有效,并且它选择了一个特定的库: 从SYSIBM/COLUMNS中选择COLUMN_NAME、DATA_TYPE、CHARACTER_MAXIMUM_LENGTH、NUMERIC_PRECISION where TBNAME = 'TABLE' and TABLE_SCHEMA='LIBRARY'; - KC Baltz
表名对我来说是大小写敏感的。 - user117499
可以添加 NULLS 来了解必填列。 - Krishna

28

通常最简单的方法是使用DESCRIBE。

DESCRIBE TABLE MYSCHEMA.TABLE
或者
DESCRIBE INDEXES FOR MYSCHEMA.TABLE SHOW DETAIL

请查看文档: DESCRIBE命令


感谢您的回答。但是我没有得到结果。 - Ambat bhath
1
你使用的是哪个平台?根据你的评论,我怀疑可能是zOS。 - Ian Bjorhovde
3
我尝试执行 DESCRIBE TABLE 语句,但是出现错误:11:42:25 [DESCRIBE - 0 行,0.000 秒] [错误代码:-104,SQL 状态:42601] 在“DESCRIBE”后发现了一个意外的标记“TABLE”。期望的标记可能包括:“JOIN <joined_table>”。SQLCODE=-104,SQLSTATE=42601,DRIVER=4.13.127 ...已执行 1 条语句,0 行受影响,执行/获取时间:0.000/0.000 秒 [0 成功,0 警告,1 错误]我正在 DBVisualizer 上运行这条语句,请提供建议。 - SSC
2
IBM DB2对此查询没有响应!它显示以下错误信息:错误:DB21033E该命令对于此DB2数据库服务器无效。 - Arunchunaivendan
@ssc 这里描述的是 db2 命令而不是 SQL 语句。如果您正在尝试通过 IBM Studio 运行它,您将会遇到此错误。 - TheBeginner

9
在DB2中,进入db2命令提示符。
  db2  =>  describe  table MyTableName

7

以下命令也可以使用:

describe SELECT * FROM table_name;

可以用任何其他select语句替换选择语句,这对于复杂的插入操作非常有用,例如使用select进行插入。


6
如何查看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上进行测试。

5

对于IBM DB2 10.7版本中的表描述,我尝试了以下方法,它运行良好。

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

4

1.使用db2 describe table命令

  db2 describe table tabschema.tabname

2. 使用DB2的描述输出

  db2 "describe select * from tabschema.tabname"

3. 使用db2look工具

  db2look -d dbname -e -t tabname

4. 在 DB2 SYS_CAT 表中查找行

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

3
php示例,用于iSeries(as400)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);

3
你可以使用以下查询获取表元数据:
SELECT * FROM SYSIBM.COLUMNS WHERE TABLE_NAME = 'ASTPCLTEXT';

1
使用以下内容来检查单个表的表描述
DESCRIBE TABLE Schema Name.Table Name

连接以下表以检查多个表的表描述,使用表id连接syscat.tables和syscat.columns

您还可以使用以下命令查看表上索引的详细信息 describe indexes for table . show detail


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接