在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)  網(wǎng)絡(luò)安全  HTML/ nodjes讀取csv文件插入mysql操作

nodjes讀取csv文件插入mysql操作

問(wèn)題描述

前臺(tái)上傳文件,后臺(tái)用fast-csv模塊讀取文件并插入,希望插入完成以后要返回給前臺(tái),所以采用了promise,但是好像吧并沒(méi)有起作用,幾千行會(huì)有數(shù)據(jù)沒(méi)有插入數(shù)據(jù)庫(kù),大文件會(huì)中途停止執(zhí)行,希望能多多指點(diǎn),謝謝

問(wèn)題出現(xiàn)的環(huán)境背景及自己嘗試過(guò)哪些方法

nodejs的異步執(zhí)行機(jī)制,采用過(guò)await/async,promise,都不是很管用。

相關(guān)代碼

// 請(qǐng)把代碼文本粘貼到下方(請(qǐng)勿用圖片代替代碼)

//
query2 = (sql, params = []) => {
    return new Promise((resolve, reject) => {
      pool.getConnection((err, connection) => {
        if (err) {
          return reject(err);
        }
        connection.query(sql, params, (err, result) => {
          connection.release();
          if (err) {
            return reject(err);
          }
          resolve(result);
        });
      });
    });
  };
  
  var    sql = "INSERT INTO tf_m_section_number VALUES ?";
  var datas=new Array();
  var pList=new Array();
    fs.createReadStream(fPath)
  .pipe(csv())
  .on("data", function(data){
      counts++;
    if(count<700)
        datas[count++]=data;
    // if(count==3)
    //     console.log(datas);
     if(count==700) {
         console.log(count);
         pList.push(query(sql,[datas]));
        //console.log(result);
        count=0;
        datas.length = 0;
    }
   //  rows[count++]=row;
 })
  .on("end",function(){    
    console.log(counts);
      console.log("done");
    if(count>0){
        pList.push(query(sql,[datas]));
    //    console.log(result);
        //return res.send("ok");
            
    }
    Promise.all(pList).then(function(result) {
        // you code...
        return res.send("ok");
    });
    //
  }).on('error',(err)=>{console.log('讀取文件時(shí)發(fā)生異常',err);});

  

你期待的結(jié)果是什么?實(shí)際看到的錯(cuò)誤信息又是什么?

數(shù)據(jù)能全部讀入數(shù)據(jù)庫(kù),事實(shí)上會(huì)有些數(shù)據(jù)丟失了

回答
編輯回答
尛曖昧

給個(gè)思路,把第一遍插入的表復(fù)制一份出來(lái),然后清空原表,再導(dǎo)入一遍,看看前后導(dǎo)入的兩表丟失的數(shù)據(jù):
若丟失的數(shù)據(jù)都是一樣的,那么單獨(dú)弄個(gè)csv只包含缺失的那部分?jǐn)?shù)據(jù),再試試導(dǎo)入這份csv,看看報(bào)什么錯(cuò);
若丟失的數(shù)據(jù)很隨機(jī),那么還需要再具體看看。

2018年7月2日 16:19