1.0.2 • Published 2 years ago
json-fast-sql v1.0.2
json-fast-sql
一款快速实现JSON转SQL语句的工具包,主要针对大量JSON数据存储数据库问题。
by 文艺倾年
项目作用
- 预处理JSON,纠正JSON错误的符号格式
- 扁平化JSON,提取JSON属性并校验合法性
- 根据json生成创建表语句,插入语句
- 根据表数据导出各字段记录的01分布情况
应用场景
如果你的大量JSON数据存在很多符号问题(如不恰当的引号问题),嵌套子句繁多(如对象嵌套对象),JSON属性过多手动建表费时,那么推荐使用该工具进行简化你的工作。
之所以会有这个轮子,也正是因为最近小航遇到了类似这样的问题,头疼的JSON,甚至JSON夹杂很多脏JSON!
示例
需求:
json大概是这样的,存在引号问题,有数组,有对象嵌套。接下来演示如何使用本工具简化工作:
{
"id": "1",
"name": "artBoy",
"info": "{
"hobby": ["reading", "piano", "studying"],
"age": 20,
"sex": "男",
"sign": "凡是不能"摧毁"我的,都必将使我强大!"
}"
}
这里我们使用压缩版(因为要进行预处理):
{"id":"1","name":"artBoy","info":"{"hobby":["reading","piano","studying"],"age":20,"sex":"男","sign":"凡是不能"摧毁"我的,都必将使我强大!"}"}
1.安装:
yarn安装:
yarn add json-fast-sql
npm安装:
npm install json-fast-sql
2.使用:
const jfs = require('json-fast-sql')
// 1.读取test.json,开启预处理,扁平化,提取属性数组
let res1 = jfs.readJson('test.json', true)
let res2 = jfs.flattenArray(res1);
let{attrArray, dataArray} = jfs.extractAttr(res2)
// // 2.生成创建表语句
let res3 = jfs.createTable(attrArray, 'mytable');
console.log(res3);
// // 3.生成插入语句
let res4 = jfs.insertTableBatch(dataArray, 'mytable')
console.log(res4);
输出语句:
CREATE TABLE mytable ( id text(500), name text(500), info_hobby_0 text(500), info_hobby_1 text(500), info_hobby_2 text(500), info_age text(500), info_sex text(500), info_sign text(500) )
[
'INSERT INTO mytable(`id`,`name`,`info_hobby_0`,`info_hobby_1`,`info_hobby_2`,`info_age`,`info_sex`,`info_sign`) VALUES("1","artBoy","reading","piano","studying","20","男","凡是不能'摧毁'我的,都必将使我强大!")'
]
文档
引入:
const jfs = require('json-fast-sql')
方法:
readJson:读取JSON
/**
* @param path json文件路径,支持大量json一次传入,文件格式不限
* @param isProJson 是否开启预处理JSON
* @return json 处理好的json
*/
const readJson = (path, isProJson = true) => {
return json;
}
flatten、flattenArray:扁平化JSON
/**
* @param data json
* @return json 处理好的json
*/
const flatten = (data) => {
return result;
}
/**
* @param data json数组
* @return json 处理好的json数组
*/
const flattenArray = (data) => {
return result;
}
extractAttr:提取JSON
/**
* @param dataArray json数组
* @return json 属性数组和纠正后的json数组
*/
const extractAttr = (dataArray) => {
return {attrArray, dataArray};
}
createMatrix:生成属性分布矩阵
/**
* @param attrArr 属性数组
* @param dataArray json数组
* @return booleanMatrixList 布尔矩阵
*/
const createMatrix = (attrArr, dataArray) => {
return booleanMatrixList;
}
createTable:生成创建表语句
/**
* @param attrArr 属性数组
* @param tableName 表名
* @return sql sql语句
*/
const createTable = (attrArr, tableName = "mytable") => {
return sql;
}
insertTableBatch:生成创建表语句
/**
* @param dataArray json数组
* @param tableName 表名
* @return sql sql语句
*/
const insertTableBatch = (dataArray, tableName = "mytable") => {
return sql;
}