postgresql支持在表和文件之间拷贝数据,可以使用PostgreSQL扩展的SQL函数COPY或者psql内部命令copy来做这件事。
导出数据的格式:
COPY table_name | (query) TO 'filename' | PROGRAM 'command' | STDOUT [ WITH OPTIONS ];
导入数据的格式:
COPY table_name | (query) FROM 'filename' | PROGRAM 'command' | STDIN [ WITH OPTIONS ];
更详细的格式描述见[1]
COPY函数
COPY函数在服务器上执行,如果输出到文件,要注意postgresql服务器进程有没有对指定目录的执行权限,比如:
=# COPY (SELECT * FROM base.tb_dictionary WHERE ...) TO '/tmp/designusage.csv' With DELIMITER ',';
将查询结果输出到临时目录下的指定文件。debian系统postgresql系统进程用户的主目录是/var/lib/postgresql,也可以将文件输出到此目录。
如无写权限,会提示:
ERROR: could not open file "..." for writing: Permission denied
copy命令
psql命令copy在客户端执行,如果输出到文件,
References:
[1]copy data between a file and a table
转载请注明:我是IT » PostgreSQL导出数据到CSV文件