达梦数据库导出表结构语句(很好用)(在达梦工具上可执行)

WITH TableData AS (

SELECT

t.TABLE_NAME,

tc.COMMENTS AS TABLE_COMMENT,

c.COLUMN_NAME,

c.DATA_TYPE,

CASE

WHEN c.DATA_TYPE IN ('CHAR', 'VARCHAR')

THEN CAST(c.CHAR_LENGTH AS VARCHAR)

WHEN c.DATA_TYPE IN ('DECIMAL', 'NUMERIC')

THEN CONCAT(CAST(c.DATA_PRECISION AS VARCHAR), ',', CAST(c.DATA_SCALE AS VARCHAR))

ELSE CAST(c.DATA_LENGTH AS VARCHAR)

END AS LENGTH_PRECISION,

cc.COMMENTS AS COLUMN_COMMENT,

c.NULLABLE,

c.COLUMN_ID,

-- 判断是否为主键

CASE

WHEN EXISTS (

SELECT 1

FROM DBA_CONS_COLUMNS pkc

JOIN DBA_CONSTRAINTS pk ON pkc.OWNER = pk.OWNER

AND pkc.CONSTRAINT_NAME = pk.CONSTRAINT_NAME

WHERE pk.CONSTRAINT_TYPE = 'P'

AND pkc.OWNER = c.OWNER

AND pkc.TABLE_NAME = c.TABLE_NAME

AND pkc.COLUMN_NAME = c.COLUMN_NAME

) THEN '✅'

ELSE ''

END AS IS_PRIMARY_KEY

FROM

DBA_TABLES t

LEFT JOIN DBA_TAB_COMMENTS tc ON t.OWNER = tc.OWNER AND t.TABLE_NAME = tc.TABLE_NAME

LEFT JOIN DBA_TAB_COLUMNS c ON t.OWNER = c.OWNER AND t.TABLE_NAME = c.TABLE_NAME

LEFT JOIN DBA_COL_COMMENTS cc ON c.OWNER = cc.OWNER AND c.TABLE_NAME = cc.TABLE_NAME

AND c.COLUMN_NAME = cc.COLUMN_NAME

WHERE

t.OWNER = 'RISK_CLOUD'

)

SELECT

CASE

WHEN ROW_TYPE = 'TABLE_HEADER' THEN '📋 表名: ' || TABLE_NAME ||

CASE WHEN TABLE_COMMENT IS NOT NULL AND TABLE_COMMENT != ''

THEN ' - ' || TABLE_COMMENT

ELSE ''

END

WHEN ROW_TYPE = 'COLUMN_HEADER' THEN ' ├─ 字段结构'

WHEN ROW_TYPE = 'COLUMN_TITLE' THEN ''

WHEN ROW_TYPE = 'COLUMN_DATA' THEN ''

ELSE ''

END AS 表结构信息,

CASE

WHEN ROW_TYPE = 'COLUMN_TITLE' THEN '字段名称'

WHEN ROW_TYPE = 'COLUMN_DATA' THEN COLUMN_NAME

ELSE ''

END AS 字段名称,

CASE

WHEN ROW_TYPE = 'COLUMN_TITLE' THEN '数据类型'

WHEN ROW_TYPE = 'COLUMN_DATA' THEN DATA_TYPE

ELSE ''

END AS 数据类型,

CASE

WHEN ROW_TYPE = 'COLUMN_TITLE' THEN '长度/精度'

WHEN ROW_TYPE = 'COLUMN_DATA' THEN LENGTH_PRECISION

ELSE ''

END AS 长度精度,

CASE

WHEN ROW_TYPE = 'COLUMN_TITLE' THEN '字段注解'

WHEN ROW_TYPE = 'COLUMN_DATA' THEN COALESCE(COLUMN_COMMENT, '')

ELSE ''

END AS 字段注解,

CASE

WHEN ROW_TYPE = 'COLUMN_TITLE' THEN '是否为空'

WHEN ROW_TYPE = 'COLUMN_DATA' THEN CASE NULLABLE WHEN 'Y' THEN '是' ELSE '否' END

ELSE ''

END AS 是否为空,

CASE

WHEN ROW_TYPE = 'COLUMN_TITLE' THEN '主键'

WHEN ROW_TYPE = 'COLUMN_DATA' THEN IS_PRIMARY_KEY

ELSE ''

END AS 是否主键

FROM (

-- 表头行

SELECT 'TABLE_HEADER' AS ROW_TYPE, TABLE_NAME, TABLE_COMMENT,

NULL AS COLUMN_NAME, NULL AS DATA_TYPE, NULL AS LENGTH_PRECISION,

NULL AS COLUMN_COMMENT, NULL AS NULLABLE, NULL AS IS_PRIMARY_KEY,

0 AS SORT_ORDER, 0 AS COLUMN_ID

FROM (SELECT DISTINCT TABLE_NAME, TABLE_COMMENT FROM TableData)

UNION ALL

-- 字段结构标题

SELECT 'COLUMN_HEADER' AS ROW_TYPE, TABLE_NAME, TABLE_COMMENT,

NULL AS COLUMN_NAME, NULL AS DATA_TYPE, NULL AS LENGTH_PRECISION,

NULL AS COLUMN_COMMENT, NULL AS NULLABLE, NULL AS IS_PRIMARY_KEY,

1 AS SORT_ORDER, 0 AS COLUMN_ID

FROM (SELECT DISTINCT TABLE_NAME, TABLE_COMMENT FROM TableData)

UNION ALL

-- 字段标题行

SELECT 'COLUMN_TITLE' AS ROW_TYPE, TABLE_NAME, TABLE_COMMENT,

NULL AS COLUMN_NAME, NULL AS DATA_TYPE, NULL AS LENGTH_PRECISION,

NULL AS COLUMN_COMMENT, NULL AS NULLABLE, NULL AS IS_PRIMARY_KEY,

2 AS SORT_ORDER, 0 AS COLUMN_ID

FROM (SELECT DISTINCT TABLE_NAME, TABLE_COMMENT FROM TableData)

UNION ALL

-- 字段数据行

SELECT 'COLUMN_DATA' AS ROW_TYPE, TABLE_NAME, TABLE_COMMENT,

COLUMN_NAME, DATA_TYPE, LENGTH_PRECISION,

COLUMN_COMMENT, NULLABLE, IS_PRIMARY_KEY,

3 AS SORT_ORDER, COLUMN_ID

FROM TableData

UNION ALL

-- 空行分隔

SELECT 'SPACER' AS ROW_TYPE, TABLE_NAME, TABLE_COMMENT,

NULL AS COLUMN_NAME, NULL AS DATA_TYPE, NULL AS LENGTH_PRECISION,

NULL AS COLUMN_COMMENT, NULL AS NULLABLE, NULL AS IS_PRIMARY_KEY,

4 AS SORT_ORDER, 999 AS COLUMN_ID

FROM (SELECT DISTINCT TABLE_NAME, TABLE_COMMENT FROM TableData)

)

ORDER BY

TABLE_NAME,

SORT_ORDER,

COLUMN_ID;

相关推荐
阿坤带你走近大数据23 分钟前
怎么查看当前oracle库下的表空间temp大小或者默认大小
数据库·oracle
yoyo_zzm31 分钟前
Laravel8.x新特性全解析
数据库·nginx
码界奇点1 小时前
基于Python的新浪微博数据爬虫系统设计与实现
数据库·爬虫·python·毕业设计·新浪微博·源代码管理
我科绝伦(Huanhuan Zhou)2 小时前
探索技术世界:我的GitHub数据库工具宝库
数据库·github
猫的玖月2 小时前
(一)MY SQL概述
数据库·sql
脑子进水养啥鱼?3 小时前
PostgreSQL .history 文件
数据库·postgresql
倔强的石头_3 小时前
5 个真实案例带你避坑:DolphinDB 实时写入、流订阅与高可用调优
数据库
虹科网络安全3 小时前
艾体宝新闻|Redis 月度更新速览:2026 年 3 月
数据库·redis·缓存
Nturmoils3 小时前
DolphinDB 实时时序数据处理踩坑实录:5 类生产故障排查与优化
数据库
csdn2015_4 小时前
postgresql 拼接字段
数据库