dataj4mysql 是一款通过http接口实现任意数据写入msyql工具,支持自动识别JSON节点,自动建立字段,支持增量更新,提供web控制台增加单一索引,重置字段类型,能够很方便的把json数据同步到mysql。dataj4mysql使用io3x独创AIC(All In classes)开发架构模式,极其简单轻量代码实现json到mysql的管理并附带一套基于yaml配置的java接口文档系统,结构如下
│ deploy.bat
│ LICENSE
│ pom.xml
│ README.md
│
├─deploy
└─src
├─main
│ ├─java
│ │ └─com
│ │ └─github
│ │ └─io3x
│ │ │ myApplication.java
│ │ │
│ │ ├─api
│ │ │ │ docController.java
│ │ │ │
│ │ │ └─classes
│ │ │ funcApi.java
│ │ │
│ │ ├─app
│ │ │ │ func.java
│ │ │ │ WebConfig.java
│ │ │ │
│ │ │ ├─libs
│ │ │ │ ├─classes
│ │ │ │ │ anyTree.java
│ │ │ │ │ db.java
│ │ │ │ │
│ │ │ │ └─lock
│ │ │ │ dbTableLock.java
│ │ │ │ internLock.java
│ │ │ │
│ │ │ ├─sboot
│ │ │ │ │ dbRecordRunner.java
│ │ │ │ │ R.java
│ │ │ │ │
│ │ │ │ ├─Config
│ │ │ │ │ WebSecurityConfig.java
│ │ │ │ │
│ │ │ │ └─Interceptor
│ │ │ │ SecurityInterceptor.java
│ │ │ │
│ │ │ └─Utils
│ │ │ CollectorUtils.java
│ │ │ RequestParamsToMap.java
│ │ │ StrUtils.java
│ │ │
│ │ ├─config
│ │ │ CorsConfig.java
│ │ │ TaskExcutor.java
│ │ │
│ │ ├─demo
│ │ │ indexController.java
│ │ │
│ │ └─syncd
│ │ │ adminController.java
│ │ │ Cron.java
│ │ │ manualController.java
│ │ │ toolController.java
│ │ │
│ │ └─classes
│ │ asyncHandleEvent.java
│ │
│ └─resources
│ │ application.yml
│ │ banner.txt
│ │ logback-spring.xml
│ │
│ ├─static
│ └─templates
│ │ doc.yaml
│ │
│ ├─api
│ │ └─doc
│ │ doc.html
│ │ header.html
│ │ index.html
│ │ widget.html
│ │
│ └─syncd
│ │ R.html
│ │
│ └─admin
│ footer.html
│ header.html
│ index.html
│ metadata.html
│
└─test
└─java
- 系统不能识别的字段类型默认使用text,可通过接口界面一键修改 见 http://localhost:13306/syncd/admin/index
- JSON结构前后不一致时,默认使用0填充,系统暂时不支持datetime等时间日期类型(只能算text或者varchar),否则变更字段类型不通用,如果json中含有时间日期类型还需要做排序处理,建议调用接口前转化成 20200912 这种数据形式
- 生产部署请使用内网地址或者加入nginx白名单 工具没有内置安全机制
- 每个生成的mysql数据库表含有主键字段xxx3id索引,json中需要避免重名
- 当字段不存在时,首次写入需要判断相对耗时较长,自动建立后就很快
可以手动编译源码或者直接下载jar包运行即可
- 手动编译
编译 执行
call mvn clean
call mvn package -Dmaven.test.skip=true
- 复制target下面的dataj4mysql.jar、templates目录到到发布目录,执行jar -jar dataj4mysql.jar 即可启动(启动前请修改配置)
- windows 系统直接运行 deploy.bat 即可生成jar包在deploy目录下
-
下载编辑好的jar包直接运行
-
修改 applacation.yml mydb节点下面mysql连接信息,然后打开 http://localhost:13306 即可
-
修改 管理平台密码 默认是 admin13306
接口地址 /syncd/tool/test 或 /syncd/tool/json2one
直接入库后如下图
默认不能识别类型使用text,默认值0 支持一键修改字段类型及单一索引,修改数据表备注 默认myisam储存引擎,如果需要修改引擎,需要修改源码找到创建表sql处即可
- 申明的字段值不能重复,且写入数据必须大于已记录的id,否则不会写入
- 申明的字段最好设置下是数字类型,且有索引id
如当前样例数据的标记字段是:aewme_live_data_id 那么如果存在aewme_live_data_id 如 325 则数据不会写入,如果不存在,但是一批数据id均小于325 这批数据也不会写入,如果需要补数据,可通过页面修改元数据最大记录id
只有 http://localhost:13306/syncd/tool/syncd 接口写入的数据才会存在最大索引id的记录,其它是去重模式判断的
相对于上一个接口,该接口只判断是否存在 aewme_live_data_id,并不判断id最大值是否超过索引记录
- 如样例数据,每天的消耗汇总是一条记录,不能重复写入,有ymd和cost两个字段标记,则限制参数传数组union_key[]得传两个,数据表会自动生成一个pkey记录是否存储过,kpey字段名称任意,由接口传入的new_key名称决定
- 暂时有个bug,就是同一批数据的时候还是会记录两条数据
直接使用yaml格式配置文件定义文档,freemarker模型引擎翻译,使用html自带表单提交到iframe内置页面进行调试
如
demotest:
title: 这是标题
url: 这是url地址
more: |
说明:
视频普通上传为了2个步骤 1.上传视频获取提取码 2.通过提取码获取转码后的视频和缩略图地址
步骤1:返回成功标识 识别ret="yes" 记住sn码 通过视频提取接口获取转码后的视频
{
"ret": "yes",
"msg": "ok",
"ser": "H-P",
"ticket": "0VE7N13EA5SLXI6N",
"info": {
"sn": "KLBW42UOQOVG55YR"
}
}
b_fds: |
access_token|这里是默认值|授权码
img||图片上传|file
more||多行文本|textarea
tags[]||标签1
tags[]||标签2
tags[]||标签3
e_fds: |
isure||是否确定(11是,10否)
- demotest 标识一个接口标识
- title 接口标题
- url 调用的地址:可以是内部地址路径如/xx/xx 也可以是其它项目地址 如http://www.io3x.com/api/xx/xx
- more 接口的一些说明,想写什么就写什么,很简单的就可以支持多行
- b_fds 节点下面表示必填字段,使用|字符分额,第一个是字段名称,第二个是默认值,第三个字段说明,第四个是区分是当行(默认不填)多行(textarea)还是文件(file)
- e_fds 同上
如
<a class="nav-menu-item" href="?op=demotest">io3x-doc基本使用样例</a>
- springboot及相关套件
- jfinal mysql操作模型 com.liucf.db.record
- Kimochi.css 接口文档UI
1.1.12 通过web管理界面 http://localhost:13306/syncd/admin/index 支持把默认text修改为 datetime类型
- 修改前,如果之前是0填充的数据,整行数据会被删除
- 写入数据必须符合 2020-01-01 00:00:00 形式格式,否则不能录入数据库
- 由于TIDB不支持字段类型的任意修改,该工具暂时不能应用于TIDB数据库