博客首页:派 大 星

⛳️ 欢迎关注 点赞 收藏 ✏️ 留言

本文由派大星原创编撰

系列专栏:《开源专栏》

本系列主要输出作者自创的开源项目

作品:www.json-sql.online



发现目录

      • 创作背景
      • 项目简介
      • 技术选型
      • 项目特点
      • 解决痛点
      • 地址传送门

大家好,我是派大星,由于前段时间实习入职,所以把时间以及精力都放在熟悉公司业务以及从工作中提升自己的业务逻辑,空余时间也是放在了学习新技术上,到目前为止也是参与了公司3个项目的开发团队中,参与过程中犯过错,暴露出了很多的不足,丧失过信心,学生时期所带的傲气也是被一点一点的慢慢的打磨掉,正是因为这些,带给我的成长是巨大的。好了,闲言少叙,下面让我们进入今天的主题。

创作背景

因为”懒“得走路,所以发明了汽车飞机,因为”懒“得干苦力活,所以发明了机器帮助我们做,很早之前看到过这个梗,而我这次同样也是因为”懒“,所以才开发出了这个工具。这里先卖个关子,先不说这个工具的作用,容我向大家吐槽一下这一段苦逼的经历。在我实习刚入职不久,就迎来了自己第一个任务,由于自己对所参与的项目的业务并不太了解,所以只能先做一些类似测试的工作,比如就像这次,组长给了我一份Json 文件,当我打开文件后看到数据都是一些地区名称,但当我随手的将滚动条往下一拉,瞬间发现不对劲,因为这个小小的文件行数竟然达到了1w+❗❗❗❗

不禁让我脊背发凉,但是这时我的担心还没达到最坏的地步,毕竟我还对具体的任务不了解。但当组长介绍任务内容,主要是让我将这些数据添加到数据库对应的表中,由于没有sql脚本,只有这个json 文件,需要手动去操作,而且给我定的任务周期是两天。听到这个时间时内心的慌张瞬间消失了,因为在之前我就了解过Navicat支持Json格式的文件直接导入数据,一个这么简单的任务给我两天时间,这不是非要让我带薪学习。

当我接下任务自信打开Navicat的导入功能时发现了一个重要问题,虽然它支持字段映射,但是给的Json数据是省市区地址名称,里面包含着各种嵌套,说实话到想到这里我已经慌了,而且也测试了一下字段只能单个的批量导入,而且不支持嵌套的类型,突然就明白为什么 给我两天的时间。这时候心里只能默默祈祷已经有大神开发出了能处理这种数据的工具网站,但是经过一个小时的艰苦奋斗,但最终依旧是没有结果,网上有很多JsonSQl的工具网站,但是很多都支持简单支持一下生成创建表结构的语句,当场心如死灰,跑路的心都有了。但最终还是咬着牙 手动初始化数据,其过程中的“趣味” 实属无法用语言表达……

上述就是这个工具的开发背景,也是怕以后再给我分配这么“有趣” 的任务。那么下面就给大家分享一下我自制的 Json转译SQL 工具,而且它也是一个完全免费的工具网站,同时这次也是将项目进行了 开源分享,大家也可以自己用现成的代码完成本地部署测试,感兴趣的同学可以自行拉取代码!

开源地址:https://github.com/pdxjie/sql-translate

项目简介

Sql-Translation (简称ST)是一个 Json转译SQL 工具,在同类工具的基础上增强了功能,为节省时间、提高工作效率而生。并且遵循 “轻页面、重逻辑” 的原则,由极简页面来处理复杂任务,且它不仅仅是一个项目,而是以“降低时间成本、提高效率”为目标的执行工具。

技术选型

前端:

  • Vue
  • AntDesignUI组件库
  • MonacoEditor 编辑器
  • sql-formatter SQL格式化

后端:

  • SpringBoot
  • FastJson

项目特点

  • 内置主键JSON块如果包含id字段,在选择建表操作模式时内部会自动为id设置primary key
  • 支持JSON数据生成建表语句:按照内置语法编写JSON,支持生成创建表的SQL语句
  • 支持JSON数据生成更新语句:按照内置语法编写JSON,支持生成创更新的SQL语句,可配置单条件、多条件更新操作
  • 支持JSON数据生成插入语句:按照内置语法编写JSON,支持生成创插入的SQL语句,如果JSON中包含 多层 (children)子嵌套,可按照相关语法指定作为父级id的字段
  • 内置操作语法:该工具在选取不同的操作模式时,内置特定的使用语法规范
  • 支持字段替换:需转译的JSON中字段与对应的SQL字段不一致时可以选择字段替换
  • 界面友好:支持在线编辑JSON代码,支持代码高亮、语法校验、代码格式化、查找和替换、代码块折叠等,体验良好

解决痛点

下面就让我来给大家介绍一下Sql-Translation 可以解决哪些痛点问题:

  • 需要将大量JSON中的数据导入到数据库中,但是JSON中包含大量父子嵌套关系 ——> 可以使用本站

  • 在进行JSON数据导入数据库时,遇到JSON字段与数据库字段不一致需要替换字段时 ——> 可以使用本站

  • 根据Apifox工具来实现更新或新增接口(前提是对接口已经完成了设计工作),提供了Body体数据,而且不想手动编写SQL时 ——> 可以使用本站

对上述三点进行进行举例说明(按照顺序):

第一种情况:

{    "id": "320500000",    "text": "苏州工业园区",    "value": "320500000",    "children": [                 {            "id": "320505006",            "text": "斜塘街道",            "value": "320505006",            "children": []        },         {            "id": "320505007",            "text": "娄葑街道",            "value": "320505007",            "children": []        },      ....    ]}

第二种情况:

第三种情况:

以上内容就是该工具的简单介绍,由于该工具内置了部分语法功能,想要了解本工具全部工具以及想要动手操作的的同学请点击前往操作文档 ,该操作文档中包含了具体的语法介绍以及每种转换的具体示例数据 提供测试使用。

地址传送门

  • 工具网站地址:http://www.json-sql.online/
  • 操作文档地址:https://pdxjie.github.io/translate.github.io/
  • 源码仓库地址:https://github.com/pdxjie/sql-translate

如果感兴趣的同学还希望可以到源码仓库给作者点个star⭐ 作为支持,非常感谢!