たとえば、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 のデータ ディレクトリに期待どおりに書き込まれました。