2013-01-18 140 views
4

我有兴趣将mysql select语句导出到samba共享文件中。一切工作正常,直到我尝试更新文件。例如,我有mysql导出到outfile peachtree.csv,并且当数据更改时,我希望它用新数据覆盖旧文件,但是,我收到错误:错误1086(HY000):File'/ srv/samba /share/peachtree.csv'已经存在。是否有一个选项或开关可以放入声明中强制执行或写入现有文件?MySQL导出到outfile并覆盖

SELECT * FROM peachtree, 
INTO OUTFILE '/srv/samba/share/peachtree.csv' 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n'; 
+0

不能被覆盖。这里的答案指向文档。 http://stackoverflow.com/questions/960627/mysql-into-outfile-overide-existing-file。 –

回答

5

你不能。这是一项安全功能。否则,您可能可以使用 来选择/ etc/password或/ etc/shells等文件。

从手册:

的SELECT ... INTO OUTFILE 'FILE_NAME' SELECT的形式 所选行写入到一个文件中。该文件是在服务器主机上创建的,因此您必须具有FILE权限才能使用此语法。文件名不能 是一个现有的文件,除其他外可以防止诸如 /etc/passwd和数据库表等文件被破坏。

http://dev.mysql.com/doc/refman/5.0/en/select.html