49

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

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

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

このファイルがどこに保存されているか考えてみませんか?

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

4

8 に答える 8

76

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

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

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

INTO OUTFILE '/tmp/mydata.csv'

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

Systemd & Linux

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

/tmpこれを最初に投稿してから数年後、経由で書き込まれたファイルを見つけることができないことに気付きました

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

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

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

ファイルoutfile.csv自体とtmp/サブディレクトリはどちらも誰でも書き込み可能に作成されていますが、systemd サービス ディレクトリ自体には 700 のアクセス許可があり、root が所有sudoしているため、その中のファイルを取得するにはアクセスが必要です。

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

于 2012-07-14T14:27:22.830 に答える
19

クライアントマシンでファイルを探しているのではないかと思います。

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

于 2012-07-14T15:07:57.797 に答える
2

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

select name from users into outfile "name.csv"

次の場所で

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

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

于 2015-03-02T10:21:49.720 に答える
2

OS Xの誰かがこの問題を抱えている場合mysql、自作でインストールすると、デフォルトの出力が次の場所にあります/usr/local/var/mysql/database-name/

于 2016-08-01T16:15:24.217 に答える
0

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

したがって、フォルダーで.....OUTFILE 'C:\carro.txt'呼び出されるファイルを取得するために書き込むだけですcarro.txtdata

于 2014-04-17T16:23:57.663 に答える