2017-04-18 69 views
0

这个问题回答的99%,我所期待的...... How do I do a bulk insert in mySQL using node.js如何使用npm mysql使用批量插入表达式?

var sql = "INSERT INTO Test (name, email, n) VALUES ?"; 
var values = [ 
    ['demian', '[email protected]', 1], 
    ['john', '[email protected]', 2], 
    ['mark', '[email protected]', 3], 
    ['pete', '[email protected]', 4] 
]; 
conn.query(sql, [values], function(err) { 
    if (err) throw err; 
    conn.end(); 
}); 

如果我想传递一个表达式,如NOW(),我会怎么做呢?如果我将它传递给数组,它会算作一个字符串。由于VALUES是由数组填充的?,因此我无法轻松注入表达式。有任何想法吗?

回答

0

基本上它似乎不可能,所以你应该做一个你想要的查询字符串。

我会尝试如下。

var sql = "INSERT INTO Test (name, email, n, modified_on) VALUES ?"; 
var values = [ 
    ['demian', '[email protected]', 1, '::NOW()'], 
    ['john', '[email protected]', 2, '::UNIX_TIMESTAMP()'], 
    ['mark', '[email protected]', 3, '::DATE()'], 
    ['pete', '[email protected]', 4, '::NOW()'] 
]; 

var formattedQuery = connection.format(sql, [values]).replace(/'::(.*?)'/g, '$1'); 

connection.query(formattedQuery, function(err) { 
}); 

fomattedQuery如下。

INSERT INTO Test (name, email, n, modified_on) VALUES ('demian', '[email protected]', 1, NOW()), ('john', '[email protected]', 2, UNIX_TIMESTAMP()), ('mark', '[email protected]', 3, DATE()), ('pete', '[email protected]', 4, NOW()) 

我希望这有助于。

+0

谢谢!这对我来说似乎很好:D –