2015-09-30 24 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少。那么我猜这个文件太大了。我固定在多个较小的文件分裂来执行加载数据,现在工作正常。

谢谢。