2014-02-20 59 views
0

我出口使用表 -如何將表導出爲具有不同名稱的平面文件在mysql中?

SELECT * INTO OUTFILE 'd:\\result.txt' 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
FROM result; 

現在我想通過把它在過程每天運行此腳本。我想用文件名「結果」與日期或其他一些我可以每天增加的動態數字。否則,它會給我錯誤的重複的文件名稱。

我應該是這樣的 -

declare var_result varchar(100); 
set var_result = 'result01012014'; 
SELECT * INTO OUTFILE var_result 
................................ 

這可能嗎?

回答

1

而不是創造Stored Procedure你能爲一個shell腳本的相同

的例子,我通常使用

#!/bin/bash 

location="/home/abdul/Desktop" 
user="root" 
pass="root" 
table="City" 
database="world_innodb" 

mysql -u$user -p$pass --column-names -e "SELECT * FROM $database.$table;" | sed 's/\t/"|"/g;s/^/"/;s/$/"/;s/\n//g' > $location/$table-$(date +"%Y-%m-%d").csv 

這將創建一個文件名一樣City-2014-02-20.csv

存儲過程中創建shell or php腳本做同樣的事

DROP PROCEDURE IF EXISTS ExportToCSV; 

DELIMITER $$ 

CREATE PROCEDURE `ExportToCSV`() 

    BEGIN 
    SET @cur_date = CURRENT_DATE(); 
    SET @path = "/tmp/"; 
    SET @table_name = "City"; 

    SET @VarSQL = CONCAT('SELECT * INTO OUTFILE \'' ,@path,@table_name,'-',@cur_date,'.csv\' FIELDS TERMINATED BY ''\,','\' OPTIONALLY ENCLOSED BY \'','"' ,'\' LINES TERMINATED BY \'','\\n','\' FROM ',@table_name,';'); 

    PREPARE stmt FROM @VarSQL; 
    EXECUTE stmt; 
    DEALLOCATE PREPARE stmt; 

    END$$ 

DELIMITER ; 
+0

這是有幫助的,但我想用上述技術來做到這一點。所以,如果有什麼辦法可以解決這個問題,請讓我來。 – Aamir

相關問題