gpt4 book ai didi

mysql - 使用 Node JavaScript 将批量数据插入 MySQL

转载 作者:行者123 更新时间:2023-11-29 21:47:09 25 4
gpt4 key购买 nike

我正在尝试从 SQL Server 获取数据并将其插入 MySQL。我已经获取了大约 1 lac 的记录。记录的获取正确完成,但在将记录插入 MySQL 期间,它不会立即插入数据。我需要刷新 MySQL 才能看到新记录。

var sql       = require('mssql');
var mysql = require("mysql");

var config = {
user : 'sa',
password : '******',
server : 'serverurl',
database : 'DB',
stream : true //work with large amount of rows
};

var connection1 = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'root',
database : 'test'
});

connection1.connect();

var connection = new sql.Connection(config, function(err) {

if(err)
console.log(err);

var request = new sql.Request(connection);
// request.stream = true; // You can set streaming differently for each request

request.query('select TOP 100000 * FROM ShipmentAuditLog WITH (NOLOCK)'); // or request.execute(procedure);


request.on('recordset',function(col){
console.time('Time-Taken');
});

// Emitted for each row
request.on('row', function(row) {

syncing(row);
// console.log('Row Inserted');

});

request.on('error', function(err) {
console.log(err);
});

// Emitted for the last one
request.on('done', function(returnValue) {
console.timeEnd('Time-Taken');
connection.close();
});
});

var syncing = function(row){
connection1.query('INSERT INTO shipmentauditlog SET ?', row, function(err,res) {

if(err)
console.log(err);
// else
// console.log('Added');

});
};

最佳答案

当我尝试将数千条假记录插入 MySQL 数据库时,我也成功地重现了相同的效果。这显然会使日志重载(因为 ACID 合规性),因此您有两种选择 - 要么在插入期间放宽 ACID 合规性(请参阅 this answer ),尽管这通常是一个非常糟糕的想法,或者更好的解决方案是使用 NodeJS 批量插入记录,而不是一条一条地插入。

我的建议是,根据记录的大小,一次读取 20 或 30 条记录,然后构建一个多插入将数据添加到 MySQL。请参阅this link for the MySQL documentation .

所以你最终会做这样的事情:

'INSERT INTO shipmentauditlog VALUES (1,2,3), (1,2,3), (1,1,1), (1,1,3);'

如果这是一个大规模的一次性操作,另一种选择是使用 NodeJS 读取所有记录并创建包含所有数据的 TXT 文档。 MySQL对于海量数据的批量加载有很好的支持。这会快很多,因为 MySQL 会批量从文件中读取数据,并在读取过程中插入数据。如果我必须加载大量数据,这将是我的首选。请参阅MySQL Documentation了解完整详细信息。

一个简单的例子是:

LOAD DATA INFILE 'mydata.txt' INTO TABLE shipmentauditlog 
FIELDS TERMINATED BY ',';

关于mysql - 使用 Node JavaScript 将批量数据插入 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34019206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com