項目(nodejs)中需要一次性插入多筆數據到數據庫,數據庫是mysql的,由于循環插入的性能太差,就像使用批量插入的方法提高數據的插入性能。
批量插入的數據庫的表結構如下:

1.數據庫連接
| var mysql = require('mysql');// 數據庫信息var connection = mysql.createConnection({ host : 'localhost', user : '數據庫用戶名', password : '數據庫登錄密碼', database : '操作數據庫名'}); |
將插入數據轉換成嵌套數組
例如要插入的兩條數據:
記錄1:
| from:"index" to:“www.alibaba.com”status:1is_new:0 |
記錄2:
| from:"index1"to:"www.google.com"status:1is_new:0 |
轉為一下格式:
| 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 ?"; |
調用query函數完成數據的插入
| 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');// 數據庫信息var connection = mysql.createConnection({ host : 'localhost', user : '數據庫用戶名', password : '數據庫登錄密碼', database : '操作數據庫名'});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");}); |
同時在這里記錄一個基于事務的操作(還沒有實踐,具體效果不詳)
用事務循環插入、如果有一條插入失敗進行回滾
新聞熱點
疑難解答