• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Ctooljson 转 mysql

武飞扬头像
夜猫逐梦
帮助1

🛫 导读

需求

获取某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
学新通

效果图

学新通

📖 参考资料

**ps:**文章中内容仅用于技术交流,请勿用于违规违法行为。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgihiaj
系列文章
更多 icon
同类精品
更多 icon
继续加载