例如,MySQL可能会将文件写入自己的数据目录中。若要指定路径,请使用完整路径。/var/lib/mysql/<databasename>
但是,它必须是一个目录,该目录可由运行MySQL服务器守护程序的用户帐户写入。出于这个原因,我经常使用:/tmp
指定要写入的路径,如:
INTO OUTFILE '/tmp/mydata.csv'
请注意,MySQL会将文件写入MySQL服务器上,而不是客户端计算机上。因此,远程连接将在远程服务器上创建输出文件。另请参阅选择“进入本地文件”?,了解更多详细信息和解决方法。
Systemd & Linux
关于在运行 systemd
的 Linux 系统上写入 /tmp
的说明:
最初发布此内容几年后,我发现自己无法找到通过/tmp
...INTO OUTFILE '/tmp/outfile.csv'
在 MariaDB 5.5 服务器上运行 Fedora Linux with .该目录和文件不是按指定方式直接写入,而是在 以下位置创建:systemd
/tmp/outfile.csv
/tmp
/tmp/systemd-mariadb.service-XXXXXXX/tmp/outfile.csv
虽然文件本身和子目录都是全域可写的,但 systemd 服务目录本身具有 700 个权限,并且是 root 用户拥有的,需要访问权限才能在其中检索文件。outfile.csv
tmp/
sudo
而不是在 MariaDB 中指定绝对路径并相对指定为 ,该文件按预期写入 MariaDB 当前所选数据库的数据目录中。/tmp/outfile.csv
outfile.csv