堕落不振功业废,勤耕不辍日月新

PostgreSQL导出数据到CSV文件

PgSQL hailen 759℃

 

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文件

喜欢 (0)or分享 (0)