如何使用通过SELECT查询获得的数据插入mysql数据库?

时间:2018-11-15 07:29:01

标签: javascript mysql node.js

我正在尝试使用node.js和mysql模块从表中选择数据,操作该数据,然后将操作数据插入数据库中的另一个表。

var mysql = require('mysql');

var connection = mysql.createConnection({
host: 'localhost',
user: 'username',
password: 'pass',
database: 'db',
});

var q = 'SELECT * FROM table1';
var data_wanted = [];

connection.query(q, function(err, result) {

    for(var i = 0; i < 100; i++) {     //let's say there are 100 rows in table1
        var manipulated_data = result + 1;
        data_wanted.push(manipulated_data);
    }

});

理想情况下,我将采用data_wanted中的值并将其批量插入。像这样:

var q2 = 'INSERT into table2 (number) VALUES ?';

connection.query(q2, [data_wanted], function(err, result) {
    //bulk inserts data_wanted[]
});

但是,data_wanted不会从第一个查询中获取数据。

console.log(data_wanted) //outputs []; still empty, even after 1st query

我认为这是一个范围问题。但是我不知道如何真正解决这个问题。非常感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

应该是这个

var q2 = 'INSERT into table2 (number) VALUES (?)';

我认为这只是您所缺少的括号。

您正在使用语句,因此您当然必须添加更多代码。

希望我能帮上忙。

答案 1 :(得分:0)

您可以使用一个查询全部插入。 这个例子:

INSERT INTO users_log (`name`,`address`)
SELECT u.`name`,u.`address`
FROM users u ;

表用户: enter image description here

表users_log:

enter image description here

此链接文档:https://dev.mysql.com/doc/refman/8.0/en/insert-select.html

答案 2 :(得分:0)

主要原因是代码没有连接到数据库。查询sql之前必须先连接数据库。您可以通过这种方式进行引用。

    var mysql = require('mysql');

    var connection = mysql.createConnection({
    host: 'localhost',
    user: 'username',
    password: 'pass',
    database: 'db',
    });

    connection.connect(function(err) {
      if (err) throw err;
      console.log("Connected!");
    });

    var q = 'SELECT * FROM table1';
    var data_wanted = [];

    connection.query(q, function(err, result) {
        result.forEach(function(row) {
           console.log(row);
          data_wanted.push(row);
        });
       console.log(data_wanted);
    });