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

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;

相关推荐
Quincy_Freak25 分钟前
银河麒麟 aarch64 环境下轻量 SQLite 管理方案实践:SQLiteGo 落地体验
数据库·sqlite·sqlitego
灵机一物42 分钟前
企业选型参考:2026 CXL 内存扩展方案六强测评与落地指南
服务器·网络·数据库·人工智能
秋风渡.44 分钟前
MySQL_数据类型知识
数据库·mysql
Season4501 小时前
Redis命令 (generic即通用命令)
数据库·redis·bootstrap
liwulin05062 小时前
【ollama】自定义结构化输出
linux·前端·数据库·ollama
木易士心2 小时前
MyBatis数据源切换全面解析
数据库
新中地GIS开发老师3 小时前
地信职业百科④:GIS开发工程师
前端·数据库·gis·webgis·三维gis开发
云和恩墨3 小时前
从“第二存储”到多智能体协作,云和恩墨充实数据基础设施产品矩阵
数据库
ClouGence3 小时前
SAP HANA 到 Doris 数据迁移:4 种方案对比与迁移教程
数据库·后端·dba
霸道流氓气质3 小时前
ApiPost 中配置自动获取 Token 并调用业务接口完整指南
java·服务器·数据库