2017-02-16 56 views
0

我試圖實現SQL編寫OUTFILE包括時間戳:獲得在MySQL查詢的OUTFILE日起節點js代碼

sql query:SET @TS = DATE_FORMAT(NOW(),'_%Y_%m_%d_%H_%i_%s'); 
SET @FOLDER = 'now'; 
SET @EXT = '.csv'; 
SET @CMD = CONCAT("SELECT * FROM test.extract INTO  OUTFILE'",@FOLDER,@TS,@EXT,"' FIELDS TERMINATED BY ',' LINES TERMINATED BY  '\n';"); 
PREPARE statement FROM @CMD; 
EXECUTE statement; 

如果我給在節點js腳本給出了相同的查詢低於它是失敗的。有人可以幫忙。

var mysql  = require('mysql'); 
var connection = mysql.createConnection({ 
host  : 'localhost', 
user  : 'root', 
password : 'root', 
database : 'test' 
}); 

connection.connect(); 

var timeInMs = Date.now(); 
console.log(timeInMs); 


connection.query("SET @TS = DATE_FORMAT(NOW(),'_%Y_%m_%d_%H_%i_%s'); 
SET @FOLDER = 'now'; 
SET @EXT = '.csv'; 
SET @CMD = CONCAT(
"SELECT * FROM test.extract INTO OUTFILE'",@FOLDER,@TS,@EXT,"' FIELDS  TERMINATED BY ',' LINES TERMINATED BY '\n';"); 

PREPARE statement FROM @CMD; 
EXECUTE statement;",function(err, rows, fields) { 
if (!err) 
    console.log('The solution is: ', rows); 
else 
    console.log('Error while performing Query.'); 
}); 
connection.end(); 

回答

0

按照mysql模塊的NodeJS的documentation

支持多個語句是出於安全原因禁用(它 允許SQL注入攻擊,如果值不正確地轉義)。 要使用此功能,您必須啓用它爲您的連接:

var connection = mysql.createConnection({multipleStatements: true}); 

另外,對於多線才能正常工作,把它放在反引號。以下代碼適用於我:

var mysql  = require('mysql'); 
var connection = mysql.createConnection({ 
host  : 'localhost', 
user  : 'root', 
password : 'root', 
database : 'test', 
multipleStatements: true 
}); 

connection.connect(); 

var timeInMs = Date.now(); 
console.log(timeInMs); 

connection.query(`SET @TS = DATE_FORMAT(NOW(),'_%Y_%m_%d_%H_%i_%s'); 
SET @FOLDER = 'now'; 
SET @EXT = '.csv'; 
SET @CMD = CONCAT(
"SELECT * FROM mysql.user INTO OUTFILE'",@FOLDER,@TS,@EXT,"' FIELDS  TERMINATED BY ',' LINES TERMINATED BY '\n';"); 
PREPARE statement FROM @CMD; 
EXECUTE statement;`  
,function(err, rows, fields) { 
if (!err) 
    console.log('The solution is: ', rows); 
else 
    console.log('Error while performing Query.', err); 
}); 
connection.end(); 
+0

感謝Nehal,我還有另外一個問題。我試圖查詢一個數據庫,如連接多個表和案例在我的代碼中。我如何在代碼中調用該查詢? –

+0

對不起。我用後面的引號實現了它。 –

+0

嗨Nehal,你能爲我回答這個問題嗎?我正在嘗試使用fs.appendfile,但無法解決它。請help.http://stackoverflow.com/questions/42401423/mysql-data-need-to-be-written-to-a-json-file –