node.js - node-mysql 插入多條數(shù)據(jù)
問(wèn)題描述
我有100條數(shù)據(jù),怎么用node插入到mysql在中啊,
我找了一種這樣的但是不好
var query = ’insert into news set ?’; connection.query(query,{title : ’node’,content : ’node’,nameConpany : ’woman’, time :’1512151’}
我的數(shù)據(jù)結(jié)構(gòu)是這樣{{“title ”,“content ”,“nameConpany ”,“time ”},{“title ”,“content ”,“nameConpany ”,“time ”},......}求怎么做
問(wèn)題解答
回答1:用事務(wù)循環(huán)插入、如果有一條插入失敗進(jìn)行回滾
mysql模塊、connection.beginTransaction是做事務(wù)
然后我這里封裝了一個(gè)函數(shù)、對(duì)傳入的數(shù)組做循環(huán)插入或更新之類(lèi)的操作、如果有一條失敗了就回滾、全對(duì)了就commit
回答2:文檔中有介紹
如果你的值的對(duì)象
var d = [{xxx: a,xxx: b,xxx: c},{xxx: a,xxx: b,xxx: c},{xxx: a,xxx: b,xxx: c}];//把對(duì)象的轉(zhuǎn)成純數(shù)組var values = [];d.forEach(function(n, i){ var _arr = []; for(var m in n){_arr.push(n[m]); } values.push(_arr);})
如果只是數(shù)組就比較簡(jiǎn)單了
var values = [[1,2,4],[5,1,7]];var sql = 'INSERT INTO xxx(a,b,c) VALUES ?';mysql.query(sql, [values], function (err, rows, fields) { callback(err, rows);});
批量插入時(shí)最好同時(shí)插入,如果循環(huán)遍歷查詢性能會(huì)有很大影響。
下面是從網(wǎng)上找到的測(cè)試結(jié)果
Innodb引擎
InnoDB 給 MySQL 提供了具有事務(wù)(commit)、回滾(rollback)和崩潰修復(fù)能力(crash recovery capabilities)的事務(wù)安全(transaction-safe (ACID compliant))型表。InnoDB 提供了行鎖(locking on row level)以及外鍵約束(FOREIGN KEY constraints)。
InnoDB 的設(shè)計(jì)目標(biāo)是處理大容量數(shù)據(jù)庫(kù)系統(tǒng),它的 CPU 利用率是其它基于磁盤(pán)的關(guān)系數(shù)據(jù)庫(kù)引擎所不能比的。在技術(shù)上,InnoDB 是一套放在 MySQL 后臺(tái)的完整數(shù)據(jù)庫(kù)系統(tǒng),InnoDB 在主內(nèi)存中建立其專(zhuān)用的緩沖池用于高速緩沖數(shù)據(jù)和索引。
測(cè)試環(huán)境
Macbook Air 12mid apache2.2.26 php5.5.10 mysql5.6.16
總數(shù)100W條數(shù)據(jù)
插入完后數(shù)據(jù)庫(kù)大小38.6MB(無(wú)索引),46.8(有索引)
無(wú)索引單條插入 總耗時(shí):229s 峰值內(nèi)存:246KB有索引單條插入 總耗時(shí):242s 峰值內(nèi)存:246KB無(wú)索引批量插入 總耗時(shí):10s 峰值內(nèi)存:8643KB有索引批量插入 總耗時(shí):16s 峰值內(nèi)存:8643KB無(wú)索引事務(wù)插入 總耗時(shí):78s 峰值內(nèi)存:246KB有索引事務(wù)插入 總耗時(shí):82s 峰值內(nèi)存:246KB無(wú)索引Load Data插入 總耗時(shí):12s 峰值內(nèi)存:246KB有索引Load Data插入 總耗時(shí):11s 峰值內(nèi)存:246KBMyIASM引擎
MyISAM 是MySQL缺省存貯引擎。設(shè)計(jì)簡(jiǎn)單,支持全文搜索。
測(cè)試環(huán)境
Macbook Air 12mid apache2.2.26 php5.5.10 mysql5.6.16
總數(shù)100W條數(shù)據(jù)
插入完后數(shù)據(jù)庫(kù)大小19.1MB(無(wú)索引),38.6(有索引)
無(wú)索引單條插入 總耗時(shí):82s 峰值內(nèi)存:246KB有索引單條插入 總耗時(shí):86s 峰值內(nèi)存:246KB無(wú)索引批量插入 總耗時(shí):3s 峰值內(nèi)存:8643KB有索引批量插入 總耗時(shí):7s 峰值內(nèi)存:8643KB無(wú)索引Load Data插入 總耗時(shí):6s 峰值內(nèi)存:246KB有索引Load Data插入 總耗時(shí):8s 峰值內(nèi)存:246KB
相關(guān)文章:
1. javascript - 如何將一個(gè)div始終固定在某個(gè)位置;無(wú)論屏幕和分辨率怎么變化;div位置始終不變2. html - vue項(xiàng)目中用到了elementUI問(wèn)題3. javascript - 原生canvas中如何獲取到觸摸事件的canvas內(nèi)坐標(biāo)?4. javascript - vscode alt+shift+f 格式化js代碼,通不過(guò)eslint的代碼風(fēng)格檢查怎么辦。。。5. javascript - 求解答:實(shí)例對(duì)象調(diào)用constructor,此時(shí)constructor內(nèi)的this的指向?6. javascript - 有什么比較好的網(wǎng)頁(yè)版shell前端組件?7. java - 如何寫(xiě)一個(gè)intellij-idea插件,實(shí)現(xiàn)編譯時(shí)修改源代碼的目的8. javascript - [js]為什么畫(huà)布里不出現(xiàn)圖片呢?在線等9. java 中Long 類(lèi)型如何轉(zhuǎn)換成Double?10. html5 - 有可以一次性把所有 css外部樣式轉(zhuǎn)為html標(biāo)簽內(nèi)style=" "的方法嗎?
