4

mysql select ステートメントを samba 共有上のファイルにエクスポートすることに興味があります。ファイルを更新しようとするまで、すべて正常に動作します。たとえば、アウトファイル peachtree.csv にエクスポートする mysql があり、データが変更されたときに古いファイルを新しいデータで上書きしたいのですが、次のエラーが発生します: ERROR 1086 (HY000): File '/srv/samba /share/peachtree.csv' は既に存在します。既存のファイルを強制または上書きするためにステートメントに入れることができるオプションまたはスイッチはありますか?

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

2 に答える 2

5

それはいけません。これはセキュリティ機能です。そうしないと、/etc/password や /etc/shells などのファイルを選択できる可能性があります。

マニュアルから:

SELECT ... INTO OUTFILE 'file_name' 形式の SELECT は、選択された行をファイルに書き込みます。ファイルはサーバー ホスト上に作成されるため、この構文を使用するには FILE 権限が必要です。file_name を既存のファイルにすることはできません。これにより、とりわけ /etc/passwd やデータベース テーブルなどのファイルが破壊されなくなります。

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

于 2013-07-04T18:03:54.013 に答える