如何查看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
遵循这个简单的步骤:
- select浏览器窗口。
- 提取(展开)它。
- select并提取(展开)表格列表。
- select所需的表并提取(展开)它。
- 双击代码选项,它打开表结构。