如何通过语句在DBeaver中生成IBM Db2数据库表的DDL?
在DBeaver中通过语句生成IBM Db2表的DDL
完全可行,下面是两种实用的语句方案:
使用Db2内置存储过程(推荐)
Db2自带的ADMIN_GET_DDL存储过程可以直接生成指定表的完整DDL,包含约束、索引、注释等所有细节,是最简便的方式。
执行以下SQL,替换占位符为你的实际表名和模式名:
SELECT ADMIN_GET_DDL('TABLE', '你的表名', '你的模式名') FROM SYSIBM.SYSDUMMY1;
示例(假设表EMPLOYEE属于模式DB2INST1):
SELECT ADMIN_GET_DDL('TABLE', 'EMPLOYEE', 'DB2INST1') FROM SYSIBM.SYSDUMMY1;
注意:如果表/模式名是小写创建的,需要用双引号包裹,比如
"employee"。
手动拼接系统视图生成自定义DDL
如果需要灵活定制DDL内容(比如只生成基础表结构),可以查询Db2的系统视图来拼接:
SELECT 'CREATE TABLE ' || T.TABSCHEMA || '.' || T.TABNAME || ' (' || LISTAGG( C.COLNAME || ' ' || C.TYPENAME || CASE WHEN C.LENGTH IS NOT NULL THEN '(' || C.LENGTH || ')' ELSE '' END || CASE WHEN C.NULLS = 'N' THEN ' NOT NULL' ELSE '' END, ', ' ) WITHIN GROUP (ORDER BY C.COLSEQ) || ')' AS TABLE_DDL FROM SYSCAT.TABLES T JOIN SYSCAT.COLUMNS C ON T.TABSCHEMA = C.TABSCHEMA AND T.TABNAME = C.TABNAME WHERE T.TABNAME = '你的表名' AND T.TABSCHEMA = '你的模式名' GROUP BY T.TABSCHEMA, T.TABNAME;
这个语句仅生成基础表结构,若需要包含主键、外键等约束,还需关联SYSCAT.KEYCOLUSE、SYSCAT.INDEXES等视图扩展逻辑。
在DBeaver中执行上述语句后,直接复制查询结果中的DDL文本即可使用。
内容的提问来源于stack exchange,提问作者Daniele Scalco
相关产品推荐
相关产品推荐

