【Ctool】json 转 mysql

news2025/2/27 20:51:35

▒ 目录 ▒

    • 🛫 导读
      • 需求
      • 开发环境
    • 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 LTSCSDN开发云
node -vv16.17.0npm -v (8.15.0)
Cloud IDE1.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:**文章中内容仅用于技术交流,请勿用于违规违法行为。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/39163.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【csdn】gitcode初体验(开发云、Pages等)(持续更新)

▒ 目录 ▒🛫 导读需求开发环境1️⃣ 开发云上免密提交代码【https方式】gitcode页面直接进入开发云2️⃣ 【git方式】通过开发云主页创建项目实现免密更新git1. 通过gitcode页面获取git地址2. 创建并配置SSH公钥(所有项目,公用一个公钥&…

【学生网页设计作品 】关于HTML公益主题网页设计——谨防电信诈骗网

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

yocto meta-st-stm32mp conf文件夹分析

meta-st-stm32mp conf文件夹分析 machine conf分析 本节主要分析conf/machine下面的文件 stm32mp1.conf 包含inc文件 include conf/machine/include/st-machine-common-stm32mp.inc include conf/machine/include/st-machine-providers-stm32mp.incst-machine-providers-…

骨传导耳机的危害有哪些,骨传导耳机是不是智商税?

关于骨传导耳机的资讯,在网上众说纷纭,那么骨传导耳机在佩戴使用时到底会不会对我们造成伤害,骨传导耳机到底是不是智商税呢?下面就给大家讲解一下骨传导耳机传播声音的方式吧。 骨传导耳机传播声音的方式是通过耳旁的骨骼传声&am…

地级市高新技术企业统计情况(2000-2019)

1、数据来源:国泰君安 2、时间跨度:2000-2019 3、区域范围:全国 4、指标说明: ① 高新技术企业定义:高新技术企业是指通过科学技术或者科学发明在新领域中的发展,或者在原有领域中革新似的运作。在界定…

C语言实现扫雷游戏(分解代码,超级详细,无压力)

目录 一、扫雷游戏 1.1玩法 1.2游戏的基本功能 二、游戏的实现 2.1创建数组 2.1.1为什么设置两组行和列? 2.2初始化棋盘 ‘ 2.2.1函数的调用 2.2.2函数体的实现 2.3打印棋盘 2.3.1函数的调用 2.3.2函数体的实现 2.3.3运行结果 2.4设置雷的位置 2.4.1函数…

HTML+CSS+JS网页设计期末课程大作业 web前端开发技术 web课程设计 网页规划与设计

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

华为云桌面Workspace,实惠更实用!

今年双十一的活动,在各大平台都掀起一股“剁手热潮”。而对于企业主来说,双十一也有各种活动,比如华为云推出了“实惠更实用,‘11’都如愿”活动,也令到企业采购部门蠢蠢欲动。这究竟是怎么回事呢? 据了解&…

JAVA的学习心路历程之JDK基础入门(下)

这篇是本人JAVA基础学习的下篇,上篇链接在: JAVA的学习心路历程之JDK基础入门(上)_Thomas_Lbw的博客-CSDN博客_jdk学习 目录 一、字符流 1.1 字符流基类 二、文件操作 2.1 文件操作 三、Swing 四、多线程编程 4.1 多线程…

算法刷题打卡第27天:省份数量---深度优先搜索

省份数量 难度:中等 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。 省份 是一组直接或间接相连的城市,组内不…

干测试这些年,去过阿里也去过小公司,给年轻测试员们一个忠告....

前言 你眼中的软件测试岗位是怎样的?大部分人可能会给出这样的回答:“测试?简单啊,没什么技术含量,无非就是看需求、看业务手册、看设计文档、然后点点功能是否实现,麻烦点的就是测试下部署安装是否出现兼…

二十三、CANdelaStudio深入-SnapshotData编辑

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的SnapshotData编辑,欢迎各位朋友订阅、评…

C#语言实例源码系列-实现滚动字幕

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 👉关于作者 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中…

考虑储能电池参与一次调频技术经济模型的容量配置方法matlab程序

考虑储能电池参与一次调频技术经济模型的容量配置方法matlab程序 参考文献:考虑储能电池参与一次调频技术经济模型的容量配置方法 摘要 :规模间歇电源并网引起的电网频率问题,导致对引入储能辅助调频的研究越发迫切。提出一种考虑储能电池参…

网安学习Day14(web漏洞-SQL注入类型及提交注入)

SQL注入类型及提交注入简要明确参数类型简要明确请求方法参数字符型注入测试>sqlilabs less 5 6sqlilabs less 5在这里插入图片描述sqlilabs less 6POST数据提交注入测试>sqlilabs less 11参数JSON数据注入测试>本地环境代码演示COOKIE数据提交注入测试>sqlilabs l…

解决Windows 10 家庭中文版没有组策略编辑器的问题

解决Windows 10 家庭中文版无法打开组策略编辑器的问题 (以下为解决效果) 今天在工作时发现电脑无法打开组策略编辑器,即WinR输入gpedit.msc不能正常调出组策略编辑器; 查看了电脑为Windows 10 家庭中文版,查资料后发…

《恋上数据结构与算法》第1季:双向链表实现(超详细笔记,图文并茂)

数据结构与算法的学习笔记目录:《恋上数据结构与算法》的学习笔记 目录索引双向链表一、双向链表补充【List接口 和 AbstractList抽象类】二、设计双向链表三、双向链表的实现1. 查询节点2. 插入节点3. 删除节点4. 清空节点四、双向链表 vs 动态数组一、双向链表 与…

JUC包(java.util.concurrent)下的常用子类

文章目录前言一、对象锁juc.locks包二、原子类三、四个常用工具类3.1 信号量 Semaphore3.2 CountDownLatch总结前言 博主个人社区:开发与算法学习社区 博主个人主页:Killing Vibe的博客 欢迎大家加入,一起交流学习~~ 一、对象锁juc.locks包 …

单元测试入门篇

一、单元测试是什么? 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。在测试金字塔模型中处于最底层: 整个金字塔模型代表着越上层的测试集成度越高,执行速度越慢,越下层…

2014-2020年国有大型商业银行和全国股份制商业银行绿色信贷数据

数据集名称:国有大型商业银行和全国股份制商业银行绿色信贷数据 时间范围:2014-2020年 数据来源:商业银行历年业绩报告和社会责任报告 相关说明:绿色金融是指为支持环境改善、应对气候变化和资源节约高效利用的经济活动&#x…