web-dev-qa-db-ja.com

MySQLでoutfileによって作成されたファイルが見つかりません

次のクエリを使用してCSVファイルを作成しています

SELECT email INTO OUTFILE "mydata.csv"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY "\n"
FROM users;

しかし、filezillaを検索しているときにどこでもmydata.csvファイルを見つけることができません。

このファイルがどこに保存されているのでしょうか?

クエリはエラーなしで正常に実行されます!ヘルプはありますか?

43
user1460822

MySQLは/var/lib/mysql/<databasename>などの独自のデータディレクトリにファイルを書き込んでいる可能性があります。パスを指定するには、フルパスを使用します。

ただし、MySQLサーバーデーモンが実行されているユーザーアカウントによって書き込み可能なディレクトリである必要があります。そのため、私はよく/tmpを使用します:

書き込み先のパスを次のように指定します。

INTO OUTFILE '/tmp/mydata.csv'

また、MySQLはクライアントマシンではなく、MySQLserverにファイルを書き込むことに注意してください。したがって、リモート接続はリモートサーバー上に出力ファイルを作成します。詳細と回避策については、 SELECT INTO OUTFILE local? も参照してください。

SystemdおよびLinux

systemdを実行しているLinuxシステムで/tmpへの書き込みに関する注意:

最初にこれを投稿してから数年後、/tmpに書き込まれたファイルを見つけることができませんでした。

...INTO OUTFILE '/tmp/outfile.csv'

systemdを使用してFedora Linuxを実行しているMariaDB 5.5サーバー上。指定された/tmp/outfile.csvにファイルを直接書き込む代わりに、そのディレクトリとファイルは/tmpのsystemdディレクトリの下に作成されました。

/tmp/systemd-mariadb.service-XXXXXXX/tmp/outfile.csv

ファイルoutfile.csv自体とtmp/サブディレクトリは両方とも誰でも書き込み可能に作成されましたが、systemdサービスディレクトリ自体には700の権限があり、ファイルを取得するにはSudoアクセスが必要です。その中で。

MariaDBで/tmp/outfile.csvとして絶対パスを指定し、outfile.csvとして相対的に指定するのではなく、ファイルは現在選択されているデータベースのMariaDBのデータディレクトリに期待どおりに書き込まれました。

55

クライアントマシンでファイルを探しているのではないでしょうか。

SELECT .. INTO OUTFILEは、サーバーマシンにファイルを書き込みます。

19
Shlomi Noach

ちょうど例:

私は以下でクエリを実行しましたMySQL Workbench&私は自分のファイルを見つけました

SELECT * FROM `db`.`table` INTO OUTFILE 'file.csv' FIELDS TERMINATED BY ',';

D:\ wamp\bin\mysql\mysql5.6.17\data\db\file.csv

以下の例を使用して、ファイルパスを設定できます。

SELECT * FROM `db`.`table` INTO OUTFILE 'C:\\file.csv' FIELDS TERMINATED BY ',';
3
Neeraj Singh

次のコマンドで作成されたINTO OUTFILEファイルを見つけました

select name from users into outfile "name.csv"

次の場所で

C:\ ProgramData\MySQL\MySQL Server 5.6\data\name.csv

何も変更したことがないので、これがおそらくデフォルトの場所です。

2
StackG

OS Xの誰かがこの問題を抱えている場合、homebrewでインストールされたmysqlのデフォルト出力は/usr/local/var/mysql/database-name/

1
seeker_of_bacon

+1から@ michael-berkowski and答えiが必要 Windowsの場合(彼が述べたように)

MariaDBのデータディレクトリ

具体的には、私のものは「mydatabase」という名前のデータベースのデータフォルダにありました

C:\ Program Files\MariaDB 10.3\data\mydatabase

0
WEBjuju

ファイルはC:\wamp\bin\mysql\mysql5.5.24\dataにありますが、次のUsersNamecarro.txtを指定した場合、名前はselect * from carro where id_cor<4 INTO OUTFILE 'C:\Users\Name\carro.txt';になります

.....OUTFILE 'C:\carro.txt'と書いてdataフォルダーのcarro.txtというファイルを取得するだけです

0
Naren