2015-09-30 50 views
2

我試圖在我的腳本中使用下一個查詢在節點js中寫入的表中插入超過600,000行。加載數據信息緩慢執行從節點js

var sql = " LOAD DATA LOCAL INFILE '/tmp/insertFile18.csv'" + 
        " INTO TABLE `pricing_leasing`" + 
        " FIELDS TERMINATED BY ',' LINES TERMINATED BY '+-'"; 

問題是它永遠不會結束(我在午餐中等了1個小時),它也沒有給出錯誤。 我在bash中直接執行,速度非常快,不到一分鐘。 然後我決定在nodejs中編寫一個腳本,除了執行腳本之外,其他腳本都不會執行任何操作,並且它在2分鐘內完成,這沒關係。

我的問題是爲什麼如果我只是在bash或它自己的節點中執行查詢js腳本是否正常工作,但如果我之前有更多的事情發生(其他查詢不同表&文件操作),它變得緩慢。

UPDATE

function uploadFile() { 

var deferred = GLOBAL.q.defer(), 
    strFileName = "/tmp/insertFile" + GLOBAL.company.id + ".csv", 
    cb = function (err) { 
     //fs.unlinkSync(strFileName); 
     if (err) { 
      console.log(err); 
      GLOBAL.objRstOfInsert['success'] = false; 
     } else { 
      // Update return structure with success message 
      GLOBAL.objRstOfInsert['success'] = true; 
     } 
     console.log("finished uploads"); 
     deferred.resolve(); 
    }; 

    var lstInsertPricingColumns = '(`sourcecompany_id`,'+ 
          '`company_id`,'+ 
          '`price`,`active`,`row_hash`)'; 

    var sql = " LOAD DATA LOCAL INFILE '" + strFileName + "'" + 
       " INTO TABLE " + GLOBAL.company.tableInsert + 
       " FIELDS TERMINATED BY ',' LINES TERMINATED BY '+-'"+ 
       lstInsertPricingColumns; 

    GLOBAL.db['rates'].query(sql, cb); 
    return deferred.promise; 
} 
+0

我們需要您向我們展示完整的nodejs代碼以幫助您。謝謝 –

+0

完整的腳本是巨大的,有很多的文件,我有這個腳本中的功能,當只有電話做這個。如果我評論這個功能一切工作正常。 但有一個磨損的行爲,這取決於我執行腳本的服務器運行速度比其他服務器快。可能是任何配置文件的問題? – VicenteJHGA

+0

那麼向我們展示執行此sql的腳本部分。 –

回答

1

的問題是,雲服務器具有比我的本地RAM少。那麼我猜這個文件太大了。我固定在多個較小的文件分裂來執行加載數據,現在工作正常。

謝謝。