1、excel设计表
| 字段名 | 字段类型 | 长度 | 是否为空(Y/N) | 主键 | 默认值 | 字段注释 | 备注 | 业务模块 | 表名 | 表注释 |
| id | int | Y | Y | 主键ID | ai_auth_user | 用户信息表 | ||||
| name | varchar | 40 | Y | 用户姓名 | ai_auth_user | 用户信息表 | ||||
| password | varchar | 64 | Y | 密码 | ai_auth_user | 用户信息表 |
2、创建设计表
CREATE TABLE
design_table
(
id INT NOT NULL AUTO_INCREMENT,
colName VARCHAR(128), -- 列名
colType VARCHAR(128), -- 列类型
colLength VARCHAR(128), -- 列类型长度
ISNULL CHAR(1), -- 是否为空 y不为空
isKey CHAR(1), -- 是否主键 y是
colDefault VARCHAR(64), -- 列默认值
colDescr VARCHAR(128), -- 列注释
remark VARCHAR(256), -- 备注
bizModel VARCHAR(64), -- 模块名
tableName VARCHAR(64), -- 表名
tableDescr VARCHAR(64), -- 表备注
PRIMARY KEY (id)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE=utf8_general_ci;
3、将excel表数据粘贴到数据库中(博主使用的数据库工具是dbvisualizer,支持多行粘贴)

4、查询生成创建表sql
-- group_concat函数长度限制问题
show variables like 'group_concat_max_len';
SET GLOBAL group_concat_max_len = 4294967295;
SET SESSION group_concat_max_len = 4294967295;
select
concat(
'create table ', t.tableName, ' ( \n' ,
group_concat(
concat('\t', trim(t.colName), ' ' , t.colType, t.isNull, t.colDefault, ' comment \'', t.colDescr, '\'', t.isKey ) order by t.i SEPARATOR ',\n'
),
'\n) comment = \'', t.tableDescr,'\' ;\n\n\n'
) as columns
from (
select (@i:=@i+1) as i,
t.tableName, t.tableDescr, t.colName, t.colDescr,
case when t.colLength >0 then concat(t.colType, '(', t.colLength, ')') else t.colType end as colType,
case when t.isNull ='Y' then ' not null ' else ' null ' end as isNull,
case
when LENGTH(t.colDefault) > 0 and t.colDefault like 'CURRENT_TIMESTAMP%' then concat(' default ', t.colDefault)
when LENGTH(t.colDefault) > 0 then concat(' default \'', t.colDefault, '\'')
else ' ' end as colDefault,
case when t.isKey ='Y' then ' PRIMARY KEY auto_increment' else ' ' end as isKey
from design_table t, (select @i:=0) as it
) t
group by t.tableName, t.tableDescr;
本文介绍了如何使用Excel来设计数据库表,并通过DBVisualizer工具将数据导入MySQL,同时展示了如何查询生成创建表的SQL语句。

1389

被折叠的 条评论
为什么被折叠?



