搜尋

首頁  >  問答  >  主體

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 ”},......}求怎么做

黄舟黄舟2872 天前800

全部回覆(2)我來回復

  • ringa_lee

    ringa_lee2017-04-17 16:35:51

    用事務循環插入、如果有一條插入失敗進行回滾

    mysql模組、connection.beginTransaction是做事務

    然後我這裡封裝了一個函數、對傳入的數組做循環插入或更新之類的操作、如果有一條失敗了就回滾、全對了就commit

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 16:35:51

    文件中有介紹

    如果你的值的物件

    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
    有索引批量插入總耗時:10s 峰值內存:8643KB
    有索引批量插入總耗時:10s 峰值內存:8643KB
    有索引批量插入總耗時:10s 峰值內存:8643KB
    有索引批量插入總耗時:16s 峰值內存:8643KB
    無索引事務插入總耗時:78s 峰值內存:246KB
    有索引事務插入總耗時:82s 峰值內存:246KB

    無索引Load Data插入總耗時:12s 峰值內存:246KB

    有索引Load Data插入總耗時:11s 峰值記憶體:246KB

    MyIASM引擎

    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🎜

    回覆
    0
  • 取消回覆