json 数据自动转换存入到mysql
有时候我们测试时,把数据用json文件保存起来,到上线时要转存到数据库,如果数据文件数目较多,将是一个比较繁琐的过程。本文基于node.js写了个简单的函数来处理这个问题。
json文件转换到数据库的函数
function translateJSONtoMysql(jsonFileName) { // 把json文件转换到数据库
const fs = require('fs');
const mysql = require('mysql');
var filePath = './public/datas/' + jsonFileName;
var realName = jsonFileName.split('.')[0]
fs.readFile(filePath, 'utf-8', (err, data) => {
var sqlconnection = mysql.createConnection({
host: '192.168.1.25',
user: 'xxx',
password: 'xxx',
database: 'xxx'
});
sqlconnection.connect();
var sql = `create table ${realName}(`;
if (err) { console.log(err); }
else {
var dataObj = JSON.parse(data);
var keys = Object.keys(dataObj[0]);
for (var k = 0; k < keys.length; k++) {
sql = sql + keys[k] + ' varchar(32),'
}
sql = sql.substring(0, sql.length - 1);
sql = sql + ');';
sqlconnection.query(sql, function (err, result) {
if (err) {
console.log('[SELECT ERROR] - ', err.message);
return;
}
});
for (var i = 0; i < dataObj.length; i++) {
var insertSql = `insert into ${realName} values(`;
for (var j = 0; j < keys.length; j++) {
insertSql = insertSql + "'" + Object.values(dataObj[i])[j] + "',";
}
insertSql = insertSql.substring(0, insertSql.length - 1);
insertSql = insertSql + ');';
sqlconnection.query(insertSql, function (err, result) {
if (err) {
console.log('[SELECT ERROR] - ', err.message);
return;
}
});
}
}
})
}
主要依赖两个包,fs和mysql。只要调用translateJSONtoMysql('haha.json');
即可完成自动转换。有几点需要注意:
1.var filePath = './public/datas/' + jsonFileName;
这行的路径改为实际json文件的储存路径;
2.
var sqlconnection = mysql.createConnection({
host: '192.168.1.25',
user: 'xxx',
password: 'xxx',
database: 'xxx'
});
host为MySQL数据库所在的主机ip。
3.sql = sql + keys[k] + ' varchar(32),'
根据需求制定数据类型。
以上。