首页/数据/SQL 速查/查询结果导出:INTO OUTFILE 与 COPY

查询结果导出:INTO OUTFILE 与 COPY

把 SELECT 结果写到服务器文件:MySQL 用 INTO OUTFILE(受 secure_file_priv 限制),PostgreSQL 用 COPY(服务端)或 psql \copy(客户端)。

SQL 速查数据更新于 2026-10-13

把查询结果写进文件

MySQL 用 SELECT ... INTO OUTFILE 把结果写到服务器文件,路径受 secure_file_priv 限制;PostgreSQL 用 COPY 走服务端(需要相应角色权限),或用 psql 的 \copy 元命令走客户端权限。导出大批数据时,这两种方式都绕开了应用层的网络往返。

基本信息

MySQL 语法SELECT … INTO OUTFILE '路径',配 FIELDS/LINES 子句定格式
MySQL 权限需要 FILE 权限;路径须在 secure_file_priv 允许目录内
目标已存在MySQL 会直接报错
PostgreSQLCOPY TO 服务端执行,需高权限角色
psql 元命令\copy 走客户端文件系统与客户端权限

典型使用场景

  • 把报表结果导出成 CSV 交给业务方
  • 跨库迁移时先导出成文件再导入
  • 单表数据的快速批量备份
  • 让大查询结果直接落盘,不经过应用层
  • 跨环境比对数据差异

MySQL 写法

MySQL 写法
SELECT id, name FROM users
INTO OUTFILE '/var/lib/mysql-files/users.csv'
FIELDS TERMINATED BY ','      -- 字段分隔符
OPTIONALLY ENCLOSED BY '"'    -- 字符串加引号
LINES TERMINATED BY '\n';     -- 行分隔符
-- 目标文件不能已存在;路径必须落在 secure_file_priv 允许的目录内

PostgreSQL 写法

PostgreSQL 写法
-- 服务端 COPY:文件写在数据库服务器上
COPY (SELECT id, name FROM users)
TO '/tmp/users.csv'
WITH (FORMAT csv, HEADER);

-- 客户端 \copy:文件写在 psql 所在的机器上
\copy (SELECT id, name FROM users) TO 'users.csv' CSV HEADER

两库对照

维度MySQL INTO OUTFILEPostgreSQL COPY
文件位置数据库服务器上COPY 在服务器,\copy 在客户端
所需权限FILE 权限加路径白名单服务端需超级用户或对应角色
目标已存在直接报错需显式指定覆盖行为
格式控制FIELDS/LINES 子句WITH (FORMAT csv, HEADER) 等选项
客户端导出无等价语法psql 的 \copy
OUTFILE 会把文件写在数据库服务器上:导出目录同主机的其他进程可能读到,敏感数据导出后要尽快转移并清理,不要长期留在服务器上。
MySQL 报 secure_file_priv 相关错误时,先执行 SHOW VARIABLES LIKE 'secure_file_priv' 看允许目录,不要随手改服务器参数。
导出文件里的 NULL 表示方式因库而异:MySQL 使用反斜杠转义写法,导入到别的库时若格式不同,需要显式指定 NULL 字符串再导。
导出的编码与换行符也要对齐:中文数据按 UTF-8 打开,跨平台时换行与前导空白可能影响解析,脚本里显式指定格式更稳。

易错点

  • 目标文件已存在:MySQL 直接报错,脚本导出前先清理或改名
  • 路径不在白名单目录内:受 secure_file_priv 限制会失败,先查参数再决定路径
  • 以为 COPY 是客户端操作:不加反斜杠的 COPY 由服务端执行,文件落在数据库主机并需要更高权限
  • 导出文件权限过宽:CSV 里可能有敏感数据,落盘后要及时收敛权限并清理
  • 导出大表不评估体积:结果文件可能撑满服务器磁盘,导出前先估行数与大小

数据来源与参考

  • MySQL 8.0 Reference Manual · SELECT ... INTO
  • PostgreSQL Documentation · COPY
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌