node.js - node-mysql 插入多條數據
問題描述
我有100條數據,怎么用node插入到mysql在中啊,
我找了一種這樣的但是不好
var query = ’insert into news set ?’; connection.query(query,{title : ’node’,content : ’node’,nameConpany : ’woman’, time :’1512151’}
我的數據結構是這樣{{“title ”,“content ”,“nameConpany ”,“time ”},{“title ”,“content ”,“nameConpany ”,“time ”},......}求怎么做
問題解答
回答1:用事務循環插入、如果有一條插入失敗進行回滾
mysql模塊、connection.beginTransaction是做事務
然后我這里封裝了一個函數、對傳入的數組做循環插入或更新之類的操作、如果有一條失敗了就回滾、全對了就commit
回答2:文檔中有介紹
如果你的值的對象
var d = [{xxx: a,xxx: b,xxx: c},{xxx: a,xxx: b,xxx: c},{xxx: a,xxx: b,xxx: c}];//把對象的轉成純數組var values = [];d.forEach(function(n, i){ var _arr = []; for(var m in n){_arr.push(n[m]); } values.push(_arr);})
如果只是數組就比較簡單了
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);});
批量插入時最好同時插入,如果循環遍歷查詢性能會有很大影響。
下面是從網上找到的測試結果
Innodb引擎
InnoDB 給 MySQL 提供了具有事務(commit)、回滾(rollback)和崩潰修復能力(crash recovery capabilities)的事務安全(transaction-safe (ACID compliant))型表。InnoDB 提供了行鎖(locking on row level)以及外鍵約束(FOREIGN KEY constraints)。
InnoDB 的設計目標是處理大容量數據庫系統,它的 CPU 利用率是其它基于磁盤的關系數據庫引擎所不能比的。在技術上,InnoDB 是一套放在 MySQL 后臺的完整數據庫系統,InnoDB 在主內存中建立其專用的緩沖池用于高速緩沖數據和索引。
測試環境
Macbook Air 12mid apache2.2.26 php5.5.10 mysql5.6.16
總數100W條數據
插入完后數據庫大小38.6MB(無索引),46.8(有索引)
無索引單條插入 總耗時:229s 峰值內存:246KB有索引單條插入 總耗時:242s 峰值內存:246KB無索引批量插入 總耗時:10s 峰值內存:8643KB有索引批量插入 總耗時:16s 峰值內存:8643KB無索引事務插入 總耗時:78s 峰值內存:246KB有索引事務插入 總耗時:82s 峰值內存:246KB無索引Load Data插入 總耗時:12s 峰值內存:246KB有索引Load Data插入 總耗時:11s 峰值內存:246KBMyIASM引擎
MyISAM 是MySQL缺省存貯引擎。設計簡單,支持全文搜索。
測試環境
Macbook Air 12mid apache2.2.26 php5.5.10 mysql5.6.16
總數100W條數據
插入完后數據庫大小19.1MB(無索引),38.6(有索引)
無索引單條插入 總耗時:82s 峰值內存:246KB有索引單條插入 總耗時:86s 峰值內存:246KB無索引批量插入 總耗時:3s 峰值內存:8643KB有索引批量插入 總耗時:7s 峰值內存:8643KB無索引Load Data插入 總耗時:6s 峰值內存:246KB有索引Load Data插入 總耗時:8s 峰值內存:246KB
相關文章:
1. angular.js - Angular路由和express路由的組合使用問題2. mysql主從 - 請教下mysql 主動-被動模式的雙主配置 和 主從配置在應用上有什么區別?3. python - django 里自定義的 login 方法,如何使用 login_required()4. angular.js - 不適用其他構建工具,怎么搭建angular1項目5. mysql優化 - mysql count(id)查詢速度如何優化?6. 主從備份 - 跪求mysql 高可用主從方案7. css3 - [CSS] 動畫效果 3D翻轉bug8. python如何不改動文件的情況下修改文件的 修改日期9. node.js - node_moduls太多了10. java8中,邏輯與 & 符號用在接口類上代表什么意思
![css3 - [CSS] 動畫效果 3D翻轉bug](http://www.cgvv.com.cn/attached/image/news/202304/110831f073.png)