简体   繁体   English

无法使用Node.js批量插入mysql

[英]Can't bulk insert into mysql using Node.js

I'm writing a server application using Node.js and I have a problem using the mysql library . 我正在使用Node.js编写服务器应用程序,而在使用mysql库时遇到问题。

The problem appears when I try to make bulk inserts into my database this is a example code I'm using. 当我尝试在数据库中进行批量插入时出现问题,这是我正在使用的示例代码。

const sql = require("mysql")

//Connection settings
const sqlConfig = require("../settings");

function executeSql(queryData, callback){
    let connection = sql.createConnection(sqlConfig.dbConfig);
    connection.connect(function(err){
        if(err){
            console.error('connection error: ' + err.stack);
            callback(null, err);
            return;
        }

        connection.query(queryData, function(error, results, fields){            
            if(error){
                console.error('error: '+error.stack);
                callback(null, error);
                return;
            }
            callback(results, null);
        });
    });
};

let sqlquery = "INSERT INTO table(val1, val2) VALUES (?)";

let val1 = [1,2,3,4];
let val2 = 1;

let values = [];

for(let i = 0; i<val1.length, i++)
    values.push([val1[i], val2]);

let queryData = {
    sql: sqlquery,
    values: values
}

executeSql(queryData, function(data, err) {
    if (err) {
        console.error(err);
    } else {
        console.log("success"); 
    }
});

The problem is that the program prints out "success" but in my DataBase there is only one row of data instead of 4, and I don't know what's wrong with this. 问题是程序打印出“成功”,但是在我的数据库中只有一行数据而不是4,而且我不知道这是怎么回事。

Ok the problem was that it needed an arrays of arrays of arrays and the query was bad. 好的,问题是它需要一个由数组组成的数组,而查询是错误的。

This is the correct query 这是正确的查询

let sqlquery = "INSERT INTO table(val1, val2) VALUES ?";

And when creating the queryData object: 并且在创建queryData对象时:

let queryData = {
    sql: sqlquery,
    values: [values]
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM