MySQL INTO OUTFILE是否覆盖现有文件?

我写了一个大的sql脚本来创建CSV文件。我想每天晚上调用cronjob来创建一个新的CSV文件,并在网站上提供该文件。

假设我将文件存储在“ /home/sites/example.com/www/files/backup.csv”中

我的SQL是

SELECT * INTO OUTFILE '/home/sites/example.com/www/files/backup.csv'

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'

LINES TERMINATED BY '\n'

FROM ( ....

当文件已经存在时,MySQL给我一个错误

文件“ /home/sites/example.com/www/files/backup.csv”已存在

有没有办法使MySQL覆盖文件?

我可以让PHP检测文件是否存在,并在再次创建之前将其删除,但是如果我可以直接在MySQL中进行操作,它将更加简洁。

回答:

不,没有办法覆盖它。从文档:

file_name不能是现有文件,这尤其可以防止破坏/ etc / passwd和数据库表之类的文件。

最好每晚使用不同的文件名,因为进行多次备份意味着您可以从存在超过一天的问题中恢复。然后,您可以维护一个始终指向最新完整csv的符号链接。

以上是 MySQL INTO OUTFILE是否覆盖现有文件? 的全部内容, 来源链接: utcz.com/qa/428168.html

回到顶部