Node.js下向MySQL數(shù)據(jù)庫插入批量數(shù)據(jù)的方法
項(xiàng)目(nodejs)中需要一次性插入多筆數(shù)據(jù)到數(shù)據(jù)庫,數(shù)據(jù)庫是mysql的,由于循環(huán)插入的性能太差,就像使用批量插入的方法提高數(shù)據(jù)的插入性能。
批量插入的數(shù)據(jù)庫的表結(jié)構(gòu)如下:

1.數(shù)據(jù)庫連接
var mysql = require('mysql');
// 數(shù)據(jù)庫信息
var connection = mysql.createConnection({
host : 'localhost',
user : '數(shù)據(jù)庫用戶名',
password : '數(shù)據(jù)庫登錄密碼',
database : '操作數(shù)據(jù)庫名'
});
將插入數(shù)據(jù)轉(zhuǎn)換成嵌套數(shù)組
例如要插入的兩條數(shù)據(jù):
記錄1:
from:"index" to:“www.alibaba.com” status:1 is_new:0
記錄2:
from:"index1" to:"www.google.com" status:1 is_new:0
轉(zhuǎn)為一下格式:
var values = [ ["index","www.alibaba.com",1,0], ["index1","www.google.com",1,0] ];
編寫插入語句
var sql = "INSERT INTO url(`from`,`to`,`status`, `is_new`) VALUES ?";
調(diào)用query函數(shù)完成數(shù)據(jù)的插入
connection.query(sql, [values], function (err, rows, fields) {
if(err){
console.log('INSERT ERROR - ', err.message);
return;
}
console.log("INSERT SUCCESS");
});
完整代碼:
var mysql = require('mysql');
// 數(shù)據(jù)庫信息
var connection = mysql.createConnection({
host : 'localhost',
user : '數(shù)據(jù)庫用戶名',
password : '數(shù)據(jù)庫登錄密碼',
database : '操作數(shù)據(jù)庫名'
});
var values = [
["index","www.alibaba.com",1,0],
["index1","www.google.com",1,0]
];
var sql = "INSERT INTO url(`from`,`to`,`status`, `is_new`) VALUES ?";
connection.query(sql, [values], function (err, rows, fields) {
if(err){
console.log('INSERT ERROR - ', err.message);
return;
}
console.log("INSERT SUCCESS");
});
同時(shí)在這里記錄一個(gè)基于事務(wù)的操作(還沒有實(shí)踐,具體效果不詳)
用事務(wù)循環(huán)插入、如果有一條插入失敗進(jìn)行回滾

mysql模塊、connection.beginTransaction是做事務(wù)
然后我這里封裝了一個(gè)函數(shù)、對傳入的數(shù)組做循環(huán)插入或更新之類的操作、如果有一條失敗了就回滾、全對了就commit
總結(jié)
以上所述是小編給大家介紹的Node.js下向MySQL數(shù)據(jù)庫插入批量數(shù)據(jù),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Node.js下向MySQL數(shù)據(jù)庫插入批量數(shù)據(jù)的方法
這篇文章主要介紹了Node.js下向MySQL數(shù)據(jù)庫插入批量數(shù)據(jù)的實(shí)現(xiàn)方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-10-10
mysql執(zhí)行計(jì)劃id為空(UNION關(guān)鍵字)詳解
這篇文章主要給大家介紹了關(guān)于mysql執(zhí)行計(jì)劃id為空(UNION關(guān)鍵字)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09
MySQL存儲引擎InnoDB架構(gòu)原理和執(zhí)行流程
InnoDB是MySQL的當(dāng)前默認(rèn)存儲引擎,支持外鍵、行級鎖定和ACID事務(wù),通過BufferPool緩沖池緩存數(shù)據(jù),RedoLogBuffer和undo日志文件保證數(shù)據(jù)的持久性和回滾能力,MySQL宕機(jī)重啟時(shí),InnoDB會根據(jù)LSN值決定是否需要從redo日志恢復(fù)數(shù)據(jù)2025-04-04
解決當(dāng)MySQL數(shù)據(jù)庫遇到Syn Flooding問題
Syn攻擊常見于應(yīng)用服務(wù)器,而數(shù)據(jù)庫服務(wù)器在內(nèi)網(wǎng)中,應(yīng)該很難碰到類似的攻擊,這篇文章主要介紹了當(dāng)MySQL數(shù)據(jù)庫遇到Syn Flooding問題 ,需要的朋友可以參考下2019-06-06
Mysql和文件系統(tǒng)的關(guān)聯(lián)詳情
這篇文章主要介紹了Mysql和文件系統(tǒng)的關(guān)聯(lián)詳情,Mysql常用的存儲引擎如InnoDB、MyISAM采用的是文件存儲,自然和文件系統(tǒng)掛鉤,那么Mysql都有哪些地方用到了文件系統(tǒng)呢,下面我們一起進(jìn)入文章學(xué)習(xí)詳細(xì)內(nèi)容吧2022-09-09

