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

mqxuamgl  于 2021-06-19  发布在  Mysql
关注(0)|答案(3)|浏览(363)

使用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);
    }

});

理想情况下,我会在需要的数据中取值并批量插入它。比如:

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

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

但是,所需的数据不从第一个查询获取数据。

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

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

nfzehxib

nfzehxib1#

主要原因是您的代码没有连接到数据库。在查询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);
    });
0wi1tuuw

0wi1tuuw2#

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

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

表用户:

表用户\u日志:

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

pbpqsu0x

pbpqsu0x3#

应该是这个

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

我想这只是你丢失的括号。
您正在使用语句,因此您当然需要添加更多代码。
我希望我能帮上忙。

相关问题