▒ 目录 ▒
- 🛫 导读
- 需求
- 开发环境
- 1️⃣ 编写js实现json转mysql
- 效果图
- 代码及注释
- 2️⃣ 集成到ctool中
- src/views/tool/json.vue
- src/views/tool/library/json/index.js
- 效果图
- 📖 参考资料
🛫 导读
需求
获取某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 | |
1️⃣ 编写js实现json转mysql
效果图
根据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='表注释';
`;
}
2️⃣ 集成到ctool中
src/views/tool/json.vue
新增mysql按钮
src/views/tool/library/json/index.js
导出功能函数
to_mysql
效果图
📖 参考资料
- 【Ctool】最强开发工具编译踩坑 https://blog.csdn.net/kinghzking/article/details/125189369
- 【Ctool】【01-功能扩展】新建新的分类和子工具页面 https://blog.csdn.net/kinghzking/article/details/125673908
**ps:**文章中内容仅用于技术交流,请勿用于违规违法行为。