項(xiàng)目(nodejs)中需要一次性插入多筆數(shù)據(jù)到數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)是mysql的,由于循環(huán)插入的性能太差,就像使用批量插入的方法提高數(shù)據(jù)的插入性能。
批量插入的數(shù)據(jù)庫(kù)的表結(jié)構(gòu)如下:
![](/d/20211018/615a3974f7c6151f19d19a8b5a332628.gif)
1.數(shù)據(jù)庫(kù)連接
var mysql = require('mysql');
// 數(shù)據(jù)庫(kù)信息
var connection = mysql.createConnection({
host : 'localhost',
user : '數(shù)據(jù)庫(kù)用戶(hù)名',
password : '數(shù)據(jù)庫(kù)登錄密碼',
database : '操作數(shù)據(jù)庫(kù)名'
});
將插入數(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]
];
編寫(xiě)插入語(yǔ)句
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ù)庫(kù)信息
var connection = mysql.createConnection({
host : 'localhost',
user : '數(shù)據(jù)庫(kù)用戶(hù)名',
password : '數(shù)據(jù)庫(kù)登錄密碼',
database : '操作數(shù)據(jù)庫(kù)名'
});
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ù)的操作(還沒(méi)有實(shí)踐,具體效果不詳)
用事務(wù)循環(huán)插入、如果有一條插入失敗進(jìn)行回滾
![](/d/20211018/2fadab2b88f1efe404bb8acc2d1fe010.gif)
mysql模塊、connection.beginTransaction是做事務(wù)
然后我這里封裝了一個(gè)函數(shù)、對(duì)傳入的數(shù)組做循環(huán)插入或更新之類(lèi)的操作、如果有一條失敗了就回滾、全對(duì)了就commit
總結(jié)
以上所述是小編給大家介紹的Node.js下向MySQL數(shù)據(jù)庫(kù)插入批量數(shù)據(jù),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
您可能感興趣的文章:- Node.js實(shí)現(xiàn)連接mysql數(shù)據(jù)庫(kù)功能示例
- node.js平臺(tái)下的mysql數(shù)據(jù)庫(kù)配置及連接
- Node.js數(shù)據(jù)庫(kù)操作之查詢(xún)MySQL數(shù)據(jù)庫(kù)(二)
- Node.js數(shù)據(jù)庫(kù)操作之連接MySQL數(shù)據(jù)庫(kù)(一)
- 從零學(xué)習(xí)node.js之mysql數(shù)據(jù)庫(kù)的操作(五)
- Node.js操作mysql數(shù)據(jù)庫(kù)增刪改查
- Linux下為Node.js程序配置MySQL或Oracle數(shù)據(jù)庫(kù)的方法
- node.js 開(kāi)發(fā)指南 – Node.js 連接 MySQL 并進(jìn)行數(shù)據(jù)庫(kù)操作
- node.js如何操作MySQL數(shù)據(jù)庫(kù)