达梦查询表字段详细信息脚本(字段名称、描述、类型、长度及是否为空)
该SQL 脚本,用于查询表中字段的基本信息,包括字段名称、描述、数据类型、数据长度、是否为空及是否为主键等属性。
SQL 脚本
-- 输入变量
DECLARE
p_owner VARCHAR2(100) := 'DMEO_DATABASE'; -- 数据库名
p_table_name VARCHAR2(100) := 'RES_DIVISION'; -- 表名
BEGIN
-- 查询字段基本信息和描述
SELECT
c.column_name AS 字段名,
s.comments AS 字段描述,
c.data_type AS 数据类型,
c.DATA_LENGTH AS 数据长度,
CASE
WHEN cc.CONSTRAINT_NAME IS NOT NULL THEN '是'
ELSE '否'
END AS 是否主键,
CASE
WHEN c.NULLABLE = 'Y' THEN '是'
ELSE '否'
END AS 是否可空,
CASE
WHEN c.column_name IN ('CREATE_DATE', 'CREATE_ID', 'CREATE_BY', 'UPDATE_DATE', 'UPDATE_ID', 'UPDATE_BY') THEN '否'
ELSE '是'
END AS 是否业务关键信息
FROM
all_tab_columns c
JOIN all_tab_comments t
ON c.owner = t.owner
AND c.table_name = t.table_name
JOIN all_col_comments s
ON c.owner = s.owner
AND c.table_name = s.table_name
AND c.column_name = s.column_name
LEFT JOIN (
SELECT
CONSTRAINT_NAME,
COLUMN_NAME
FROM
ALL_CONS_COLUMNS
WHERE
CONSTRAINT_NAME IN (
SELECT
CONSTRAINT_NAME
FROM
ALL_CONSTRAINTS
WHERE
TABLE_NAME = p_table_name
AND OWNER = p_owner
AND CONSTRAINT_TYPE = 'P'
)
) cc
ON c.COLUMN_NAME = cc.COLUMN_NAME
WHERE
c.owner = p_owner
AND c.table_name = p_table_name
AND c.column_name NOT IN ('CREATE_ID', 'UPDATE_ID')
ORDER BY
c.column_id;
END;
功能说明
-
查询字段基本信息
包括字段名称、数据类型、字段长度及字段描述。 -
分析字段的属性
判断字段是否为主键、是否允许为空及是否为业务关键信息。 -
过滤特定字段
排除特定字段,如 CREATE_ID 和 UPDATE_ID。 -
按字段顺序排序
按字段物理存储顺序(column_id)进行排序,确保输出结果与表定义一致。
详细解析
脚本通过查询达梦数据库的以下系统视图,提取表的元数据:
-
all_tab_columns
提供字段的基本信息,包括名称、数据类型、长度、可空性等。
-
all_tab_comments 和 all_col_comments
用于获取表及字段的注释信息。
-
all_cons_columns 和 all_constraints
用于查询表的主键约束信息。
输出结果示例
执行上述脚本后,可能会输出以下结果:
应用场景
- 大数据抽取
提取表的详细字段信息,用于大数据平台的字段映射和数据同步。 - 设计文档生成
自动生成数据字典或表结构文档,便于开发团队、数据库管理员等人员参考。 - 数据库审计与优化
检查表字段的属性,如可空性、主键等,确保数据库设计符合业务需求及性能要求。 - 业务系统开发
提供字段详细信息,为开发人员提供数据表结构支持,确保系统的兼容性和高效性。