nanfang项目开发过程任务:获取物理数据模型清单。

将PDManer文件中的"数据表"生成"物理数据模型清单",很显然,PDManer是没有输出"物理数据模型清单”这个功能的。

项目急,任务重,我们不得不找一些快速解决方案,代替我们人工复制粘贴”物理数据模型清单“的内容。

操作步骤(MySQL版)- 快速获取物理数据模型清单

1、将PDManer的项目导出为DDL语句。(选择MySQL数据库)

2、创建一个MySQL数据库 'FOR'(库名自定义,下文SQL语句会用到以where = 查询不同库的信息)

3、将DDL语句执行到数据库中。

4、编写自定义的SQL

SELECT
	"" AS 'EXCEL序号',
	"" AS '系统名称(非DDL信息)',
	"" AS '项目名称(非DDL信息)',
	"" AS '业务域(非DDL信息)',
	t1.TABLE_NAME 表代码,
	t2.TABLE_COMMENT AS 表名称,
	t2.TABLE_COMMENT AS 表说明,
	COLUMN_NAME 字段代码,
	SUBSTRING_INDEX( COLUMN_COMMENT, ";", 1 ) 字段名,
	SUBSTRING_INDEX( COLUMN_COMMENT, ";", 1 ) 字段注释,
	UPPER( DATA_TYPE ) 字段类型,
	CHARACTER_MAXIMUM_LENGTH 长度,
	IF
		( COLUMN_KEY = 'PRI', 'TRUE', 'FALSE' ) AS 是否主键,
		"FALSE" AS 是否外键,
	IF
		( IS_NULLABLE = 'YES', '是', '否' ) AS 是否为空,
	"否" AS 是否主模型,
	"" AS 引用编码标准,
	"" AS 数据质量要求,
	REPLACE ( t2.TABLE_COMMENT, '表', '信息' ) AS 对应业务对象,
	SUBSTRING_INDEX( COLUMN_COMMENT, ";", 1 ) AS 数据项 -- ORDINAL_POSITION AS "字段在表的顺序,1是第一位"
	-- COLUMN_DEFAULT AS 默认值,
	-- COLUMN_COMMENT AS 备注
FROM
	INFORMATION_SCHEMA.COLUMNS AS t1
	LEFT JOIN information_schema.TABLES t2 ON t1.TABLE_NAME = t2.TABLE_NAME 
	WHERE-- 对应的数据库
	t1.table_schema = 'FOR' -- 对应库下的具体表名,不加 table_name 则查所有表的字段
	-- and table_name = 'IM_OT_DS_APP_APPLICATION'
	
	AND t1.table_name IN (
	SELECT
		table_name 
	FROM
		information_schema.TABLES 
	WHERE
		table_type = 'BASE TABLE' 
	AND table_schema = 'FOR' 
	)

执行查询结果DEMO如下:

查询到的结果,可以直接复制到Excel了。完结~

下面我将详细的分析,上述SQL,可以查询到的内容。(只针对于MySQL8)

要知道MySQL的数据表信息存储在 information_schema 库的 tables 表中

字段的信息存储在 information_schema库 columns表中

如果我们要获取表的字段信息可以使用(伪代码)select * from information_schema.columns where table_schema = "你的数据库名"

如果要获取表信息的话,我们可以关联查询information_schema.tables,条件是 t1.TABLE_NAME = t2.TABLE_NAME。

【重点】库information_schema 表 tables 我们能获取的元素

字段名注释示例数据
TABLE_CATALOG表所属的目录名NULL
TABLE_SCHEMA表所属的数据库名最终幻想11数据库
TABLE_NAME表名用户登录记录表
TABLE_TYPE表类型,可能的值为 BASE TABLE、VIEW 或 SYSTEM VIEWBASE TABLE
ENGINE存储引擎InnoDB
VERSION存储引擎的版本号10
ROW_FORMAT行格式,可能的值为 Fixed、Dynamic、Compressed、Redundant、Compact 或 PagedDynamic
TABLE_ROWS表中行的数量1000
AVG_ROW_LENGTH平均每行的长度50
DATA_LENGTH表中数据的长度50000
MAX_DATA_LENGTH最大数据长度0
INDEX_LENGTH所有索引占用的空间大小20480
DATA_FREE未使用的空间大小0
AUTO_INCREMENT自增长列的下一个值1001
CREATE_TIME表的创建时间2023-06-26 10:00:00
UPDATE_TIME表的最后更新时间2023-06-26 10:30:00
CHECK_TIME表的最后检查时间NULL
TABLE_COLLATION表的字符集和排序规则utf8mb4_general_ci
CHECKSUM表的校验和NULL
CREATE_OPTIONS表的创建选项NULL
TABLE_COMMENT表的注释我是表的注释

【重点】库information_schema 表 COLUMNS 我们能获取的元素

字段名注释示例数据
TABLE_CATALOG表所属的目录名称NULL
TABLE_SCHEMA表所属的数据库名称我是数据库名
TABLE_NAME表名称我是数据表名
COLUMN_NAME列名称USER_NAME
ORDINAL_POSITION列在表中的位置1
COLUMN_DEFAULT列的默认值NULL
IS_NULLABLE列是否允许为空YES 或者 NO
DATA_TYPE 注意:COLUMN_TYPE 不同点是,不包含长度列的数据类型varchar 建议使用UPPER(DATA_TYPE) 转为大写
CHARACTER_MAXIMUM_LENGTH列的字符最大长度64
CHARACTER_OCTET_LENGTH列的字节最大长度192
NUMERIC_PRECISION数值列的精度NULL
NUMERIC_SCALE数值列的小数位数NULL
DATETIME_PRECISION日期时间列的精度NULL
CHARACTER_SET_NAME列的字符集名称utf8mb3
COLLATION_NAME列的字符集排序规则名称utf8mb3_tolower_ci
COLUMN_TYPE列的数据类型和长度varchar(64)
COLUMN_KEY列的键类型
EXTRA列的额外信息
PRIVILEGES列的权限select,insert,update,references
COLUMN_COMMENT列的注释表所属的目录名称
GENERATION_EXPRESSION列的生成表达式NULL
SRS_ID空间参考系统的 IDNULL

至于说需要其他字段,考虑问下GPT MySQL是否有相关的信息

特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤