次のクエリを使用してCSVファイルを作成しています
SELECT email INTO OUTFILE "mydata.csv"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY "\n"
FROM users;
しかし、filezillaを検索しているときにどこでもmydata.csvファイルを見つけることができません。
このファイルがどこに保存されているのでしょうか?
クエリはエラーなしで正常に実行されます!ヘルプはありますか?
MySQLは/var/lib/mysql/<databasename>
などの独自のデータディレクトリにファイルを書き込んでいる可能性があります。パスを指定するには、フルパスを使用します。
ただし、MySQLサーバーデーモンが実行されているユーザーアカウントによって書き込み可能なディレクトリである必要があります。そのため、私はよく/tmp
を使用します:
書き込み先のパスを次のように指定します。
INTO OUTFILE '/tmp/mydata.csv'
また、MySQLはクライアントマシンではなく、MySQLserverにファイルを書き込むことに注意してください。したがって、リモート接続はリモートサーバー上に出力ファイルを作成します。詳細と回避策については、 SELECT INTO OUTFILE local? も参照してください。
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のデータディレクトリに期待どおりに書き込まれました。
クライアントマシンでファイルを探しているのではないでしょうか。
SELECT .. INTO OUTFILE
は、サーバーマシンにファイルを書き込みます。
ちょうど例:
私は以下でクエリを実行しました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 ',';
次のコマンドで作成されたINTO OUTFILEファイルを見つけました
select name from users into outfile "name.csv"
次の場所で
C:\ ProgramData\MySQL\MySQL Server 5.6\data\name.csv
何も変更したことがないので、これがおそらくデフォルトの場所です。
OS Xの誰かがこの問題を抱えている場合、homebrewでインストールされたmysql
のデフォルト出力は/usr/local/var/mysql/database-name/
+1から@ michael-berkowski and答えiが必要 Windowsの場合(彼が述べたように)
MariaDBのデータディレクトリ
具体的には、私のものは「mydatabase」という名前のデータベースのデータフォルダにありました
C:\ Program Files\MariaDB 10.3\data\mydatabase
ファイルは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
というファイルを取得するだけです