cari

Rumah  >  Soal Jawab  >  teks badan

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

黄舟黄舟2782 hari yang lalu767

membalas semua(2)saya akan balas

  • ringa_lee

    ringa_lee2017-04-17 16:35:51

    用事务循环插入、如果有一条插入失败进行回滚

    mysql模块、connection.beginTransaction是做事务

    然后我这里封装了一个函数、对传入的数组做循环插入或更新之类的操作、如果有一条失败了就回滚、全对了就commit

    balas
    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
    有索引批量插入 总耗时: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

    balas
    0
  • Batalbalas