使用node将JSON对象导入mysql的最快方法
使用前面的例子?如何使用使用node将JSON对象导入mysql的最快方法,mysql,node.js,Mysql,Node.js,使用前面的例子?如何使用 没有手动命名表列标题的JSON对象?并确保它是异步的 var mysql = require('node-mysql'); var conn = mysql.createConnection({ ... }); var values = [ {name:'demian', email: 'demian@gmail.com', ID: 1}, {name:'john' , email: 'john@gmail.com' , ID: 2},
没有手动命名表列标题的JSON对象?并确保它是异步的
var mysql = require('node-mysql');
var conn = mysql.createConnection({
...
});
var values = [
{name:'demian', email: 'demian@gmail.com', ID: 1},
{name:'john' , email: 'john@gmail.com' , ID: 2},
{name:'mark' , email: 'mark@gmail.com' , ID: 3},
{name:'pete ' , email: 'pete@gmail.com' , ID: 4}
];
// var sql = "INSERT INTO Test (name, email, n) VALUES ?";
conn.query(sql, [values], function(err) {
if (err) throw err;
conn.end();
})
您可以创建一个小函数,将具有该格式的数组映射到insert语句
您可以轻松地在字段中循环并使用一些字符串连接 查看“自定义格式”部分。如果您注意到,此示例在查询中使用命名占位符,允许您传递对象,占位符将替换为对象中的匹配属性。为了清晰起见,我还粘贴了相关部分:
connection.config.queryFormat = function (query, values) {
if (!values) return query;
return query.replace(/\:(\w+)/g, function (txt, key) {
if (values.hasOwnProperty(key)) {
return this.escape(values[key]);
}
return txt;
}.bind(this));
};
connection.query("UPDATE posts SET title = :title", { title: "Hello MySQL" });
你可以这样做:
for(var i = 0; i < values.length; i++){
var post = values[i]
var query = connection.query('INSERT INTO posts SET ?', post, function(err, result) {
// Finish
});
}
您必须循环第一个值才能得到这样的名称
var names = [];
for(name in values[0]){
names.push(name);
// That would give you name, email, id
}
然后您必须创建自己的字符串来插入
var newvalues = [];
for(var i = 0; i < values.length; i++){
newvalues.push('(' + values[i].join(',') + ')');
}
您必须自己测试代码,这就是您要做的。更好的选择是(使用MySQL连接):
您可以更改变量以匹配问题吗?似乎在循环中每次都可以访问数据库。有没有办法只访问数据库一次?大容量插入?colHeader=Object.keys(值[0])怎么样;去拿钥匙?有没有类似的价值观?这将删除一个for循环-好的,一个是为循环编写的。@KevinSimper您能尝试回答这个问题吗,它在某种程度上是相关的,但我不想进入任何类型的循环,只想使用sql语句处理所有事情@user2727195我的答案能帮你解决这个问题吗?
var newvalues = [];
for(var i = 0; i < values.length; i++){
newvalues.push('(' + values[i].join(',') + ')');
}
connection.query('INSERT INTO posts (' + names.join(',') + ') VALUES ' + newvalues.join(',') , function(err, rows, fields) {
// Result
});
app.get('/yourcontroller/:id', function (req, res) {
var id = req.params.id;
var dataUpdate = req.body;
connection.query(
'UPDATE yourtable SET ? Where ID = ?',
[dataUpdate, id],
function (err, result) {
if (err) throw err;
console.log('Updated data ! Changed ' + result.changedRows + ' rows');
}
);
});