mysql提取建表语句_获取MySQL中某个数据库下所有表建表语句的DDL
本脚本可以获取MySQL中某个数据库下所有表建表语句的DDL
注意:本脚本需在MySQL8.0以上版本运行
注意:本脚本不获取VIEW创建语句
注意:本脚本没有处理主键,外键等约束
注意:本脚本只处理非分区表,分区表请自己改写脚本
注意:如果你做数据迁移,想把MySQL数据库迁移到其他数据库,自己改写脚本
WITH tab AS
(SELECT table_name FROM information_schema.TABLES WHERE table_schema = '数据库名' and table_type='BASE TABLE')
SELECT CASE
WHEN id = -1 THEN
concat('create table ', table_name)
WHEN id = 0 THEN
'('
WHEN id = 1 AND max_id = 1 THEN
concat(' ', column_name, ' ', column_type)
WHEN id = 1 AND max_id <> 1 THEN
concat(' ', column_name, ' ', column_type, ',')
WHEN id >= 1 AND id < max_id THEN
concat(' ', column_name, ' ', column_type, ',')
WHEN id = max_id THEN
concat(' ', column_name, ' ', column_type)
WHEN id = 999 THEN
');'
END create_table_ddl
FROM (SELECT table_name,
ordinal_position id,
max(ordinal_position) over(PARTITION BY table_schema, table_name) max_id,
column_name,
concat(column_type,
CASE
WHEN is_nullable = 'NO' THEN
' not null'
ELSE
''
END,
CASE
WHEN COLUMN_DEFAULT IS NULL THEN
''
WHEN COLUMN_DEFAULT IS NOT NULL AND
data_type IN ('varchar', 'char') THEN
concat(' default ', '''', column_default, '''')
WHEN COLUMN_DEFAULT IS NOT NULL AND
data_type NOT IN ('varchar', 'char') THEN
concat(' default ', column_default)
END,
'',
REPLACE(REPLACE(extra, 'DEFAULT_GENERATED', ''),
'auto_increment',
'')) column_type
FROM information_schema.COLUMNS
WHERE table_schema = '数据库名' and table_name in (select table_name from tab)
UNION ALL
SELECT table_name, -1 ordinal_position, NULL, NULL, NULL
FROM tab
UNION ALL
SELECT table_name, 0 ordinal_position, NULL, NULL, NULL
FROM tab
UNION ALL
SELECT table_name, 999 ordinal_position, NULL, NULL, NULL
FROM tab
ORDER BY table_name, id) a;
————————————————
版权声明:本文为CSDN博主「南都有雪」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_33220360/article/details/113216501
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报