2014-06-26 48 views
-1

我必須每5分鐘將MySQL表格數據導出爲CSV文件,並使用相同的文件位置和文件名。 我運行下面的查詢來導出:如何從MYSQL導出時用新文件覆蓋現有的CSV文件

SELECT * INTO OUTFILE ' c:/newfolder/matrix.csv ' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' FROM tablename 

當我導出數據,第一次正確導出,但第二次它顯示了錯誤「SQL錯誤(1086)文件:C:/ newfolder /基質.csv'已經存在「。我需要覆蓋現有的文件。

任何人都可以幫助解決這個問題嗎?

+0

不能夠覆蓋的目的是防止任何人誰從獲得數據庫訪問一個安全功能刪除重要文件。如果你想這樣做,你可能需要使用'\!來做一個shell命令來完成它。 rm'my_file.csv'。 – scragar

+0

可能重複[MySQL INTO OUTFILE覆蓋現有文件?](http://stackoverflow.com/questions/960627/mysql-into-outfile-overide-existing-file) – vhu

+0

每5分鐘備份一次?二十四小時備份的二進制日誌可能會更好嗎? (輕鬆在文件上使用日期時間戳,並根據需要刪除額外文件以釋放腳本或cron作業中的空間)PS - 如果您想編輯自己的帖子,建議使用創建該文件的帳戶登錄原來的帖子。 –

回答

0

我猜你正在使用SELECT ... INTO OUTFILE聲明。

根據documentation文件不能存在,或者該語句將失敗:

的SELECT ... INTO OUTFILE「FILE_NAME」 SELECT的形式選擇的行寫入一個文件。該文件是在服務器主機上創建的,因此您必須具有FILE權限才能使用此語法。 FILE_NAME不能是現有文件...

使用文件用mysqldump的替代,並把在crontab中

*/5 * * * * /path/to/your/file/backup.sh