我正在尝试使用下一个查询从我在节点js中编写的脚本中的表中插入超过600,000行。
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脚本它是否正常工作,但如果我之前有更多的东西(在不同的表和文件操作上的其他查询)它会变慢
更新
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 :(得分:1)
问题是云服务器的ram低于我的本地。然后我猜文件太大了。我修复了拆分多个较小的文件以执行加载数据,现在工作正常。
感谢。