获取某json格式的数据后,希望将它保存到数据库,这时就需要根据json内容转换为数据库建表语句,方便快速建表。
- 根据字段类型(整数、浮点数、字符串)创建不同的sql字段。
- 添加表头表尾。
本文在ctool基础上,扩展该功能。
小编fork的ctool代码地址:https://gitcode.net/yeahmao/front_end__ctool
版本号 | 描述 | |
---|---|---|
文章日期 | 2022-11-26 | |
操作系统 | Ubuntu 20.04.4 LTS | CSDN开发云 |
node -v | v16.17.0 | npm -v (8.15.0) |
Cloud IDE | 1.71.0 | |
根据json生成mysql的语句。
// 驼峰转下划线
function toLine(name) {
return name.replace(/([A-Z])/g,"_$1").toLowerCase();
}
// 判断是否是浮点数
function isDot(num) {
return String(num).indexOf(".") > -1
}
// 根据json字段的k和v转换一行sql(一个字段)
function get_line(k, v) {
if (typeof v == 'number') {
if (isDot(v)) {
return ` \`${k}\` float NOT NULL DEFAULT '0' COMMENT '',\n`;
} else {
return ` \`${k}\` bigint(20) NOT NULL DEFAULT '0' COMMENT '',\n`;
}
}
else if (typeof v == 'string') {
return ` \`${k}\` varchar(255) NOT NULL DEFAULT '' COMMENT '',\n`;
}
else if (typeof v == 'boolean') {
return ` \`${k}\` bigint(20) NOT NULL DEFAULT '0' COMMENT '',\n`;
}
return ` \`${k}\` varchar(255) NOT NULL DEFAULT '' COMMENT '',\n`;
}
// json2sql
// 模板-通用表头
// json转换后的字段
// 模板-通用表尾
function json2sql(j) {
var ret = `
DROP TABLE IF EXISTS \`table_name\`;
CREATE TABLE table_name(
\`id\` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id,唯一标识',
`;
for (let k in j) {
ret += get_line(toLine(k), j[k]);
}
return ret + `
\`my_status\` INTEGER unsigned NOT NULL DEFAULT '1' COMMENT '状态:0为禁用;1为正常',
\`my_reserve1\` varchar(256) NOT NULL DEFAULT '' COMMENT '保留字段1',
\`my_reserve2\` varchar(256) NOT NULL DEFAULT '' COMMENT '保留字段2',
\`create_time\` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
\`create_by\` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人',
\`update_time\` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '操作时间',
\`update_by\` varchar(64) DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (\`id\`),
UNIQUE KEY \`id_UNIQUE\` (\`id\`)
) ENGINE=InnoDB AUTO_INCREMENT=123001 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='表注释';
`;
}
新增mysql按钮
导出功能函数
to_mysql
**ps:**文章中内容仅用于技术交流,请勿用于违规违法行为。