nodejs插入mysql_nodejs插入大量记录到mysql中

本文介绍了在Node.js中处理大量数据插入MySQL的场景,通过将数据写入文件再利用`LOAD DATA INFILE`的方式进行导入,但在测试20万条数据时,发现文件写入耗时较长。目前寻求优化方案。文中展示了代码示例,以及不同数量级数据的处理时间截图。
摘要由CSDN通过智能技术生成

在node中获取到一个对象数组,可能包含几万个对象,以下是将数据写到文件,再使用load data in file方式进行处理的效率测试,

但是在进行20w数据测试时,文件大小才15M,文件的写操作用了779933ms,求优化方式

1.[代码][JavaScript]代码

var mysqlpool=require('../modules/mysqlpool')();

var SimpleQuene=require('../modules/SimpleQuene');

var hash=require('../modules/hash');

var moment=require('moment');

var fs=require('fs');

var tempfilepath='E:/1.txt';

var limit=200000;

var queue=new SimpleQuene(limit);

var nowTime=moment().format('YYYY-MM-DD h:mm:ss');

console.time('init data');

for (var i =0;i

url='http://www.baidu.com'+i;

urlhash=hash.fnv1a(url);

queue.in({

url:url,

hash:urlhash,

title:'标题是什么'+i,

time:nowTime

});

}

console.timeEnd('init data');

writeDate();

function writeDate(){

console.time('fs');

var writer=fs.createWriteStream(tempfilepath);

while(!queue.isEmpty()){

var temp=queue.out();

writer.write(temp.url+','+temp.hash+','+(temp.title || '""')+','+(temp.time || '""')+"\n");

};

writer.end(function(){

console.timeEnd('fs');

save();

});

}

function save(){

console.time('sql');

var sql="load data infile '"+tempfilepath+"' replace into table spider_page FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (url,urlhash,title,time)" ;

mysqlpool.query(sql,function(err,result){

console.timeEnd('sql');

console.log(result.affectedRows+' rows have been insert');

});

}

2.[图片] 10000.png

04112049_Mh4M.png

3.[图片] 50000.png

04112049_WGRe.png

4.[图片] 100000.png

04112049_GArX.png

5.[图片] 200000.png

04112630_6LkC.png

6.[图片] file.png

04112706_8XHR.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Node.js使用MySQL插入语句时,你可以通过获取返回结果的`insertId`来获取最后一条插入记录的ID。具体步骤如下所示: 1. 首先,你需要在Node.js创建一个MySQL连接。你可以参考的示例代码来创建连接。 2. 准备插入语句,将SQL语句存储在变量`sql`。 3. 使用连接对象的`query`方法执行插入语句,并在回调函数处理结果。示例代码如下: ``` let sql = 'INSERT INTO your_table (column1, column2) VALUES (?, ?)'; let values = ['value1', 'value2']; connection.query(sql, values, function (err, result) { if (err) throw err; let lastId = result.insertId; console.log('最后插入数据ID为:', lastId); }); ``` 在上面的代码,你需要将`your_table`替换为你的表名,`column1`和`column2`替换为你要插入的列名,`value1`和`value2`替换为对应的值。 通过以上步骤,你就可以在Node.js使用MySQL插入语句,并获取到最后一条插入记录的ID了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [nodejs mysql插入一条数据后,如何获取最后插入这条数据的 id](https://blog.csdn.net/KimBing/article/details/124199374)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [nodejs操作mysql数据库示例](https://download.csdn.net/download/weixin_38740391/13039275)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值