我解析一个大的csv并将每行插入到我的mysql表中。
解析后,我做了很多计算和转换,并将其保存到新的对象
obj.push({
"ID": value.id,
"col1": value.calc1,
... });
在Object完成后,我做了:
async.forEach(obj, function (Insertobj, callback) {
var query = conn.query('INSERT INTO table SET ?', Insertobj);
},function (err){
if (err) {
console.log(err);
console.log('failed to process');
}}
在浏览obj之后我得到=>
Error: ER_BAD_FIELD_ERROR: Unknown column 'NaN' in 'field list'..
但他将完整的对象插入我的桌子!我没有任何名为NaN或空cols的列。我该怎么调试呢?我尝试将console.log设置为err.sql,但他打印" undefined"。使用debug:连接中的true并没有帮助我。
答案 0 :(得分:0)
我认为您误解了如何使用节点js模块转义mysql值。该错误是由于您未指定要更新的列。除此之外,应使用数组而不是对象填充转义值。值按顺序在查询中转义。您的代码可能如下所示:
valuesarray.push([
value.id,
value.calc1
]);
async.forEach(valuesarray, function ( insertarray, callback ) {
var query = conn.query('INSERT INTO table SET ID = ?, col1 =
?', insertarray);
},function (err){
if (err) {
console.log(err);
console.log('failed to process');
}
});