postgresql数据处理

133 阅读1分钟
postgresql数据处理

COPY命令

1.需要具备超级用户权限

2.从数据库服务端主机读取或写入文件数据

3.SQL命令

基本用法

COPY tbale_name[(column_name)] FROM {'filename'|PROGRAM 'command'|STDIN} [WITH (option)]

COPY {table_name[(column_name)]|(query)} TO {'filename'|PROGRAM 'command'|STDOUT}[[WITH(option)]

option的选项

选项描述
format format_namecsv,text
oids boolean复制带上oid
freeze冻结数据,然后执行vacuum freeze
delimiter 'delimiter_character'分割符
null 'null_string'指定null的值,默认为的\N
header boolean带上表字段名称
quote 'quote_character'引用字符
encoding 'encoding_name'指定编码字符
stdin客户端程序输入流
stdout客户端输出流

导出整个表数

COPY schema.tb_aa TO '/tmp/tb_aa.csv' delimiter ',' WITH csv header encoding 'GBK';
COPY schema.tb_aa TO '/tmp/tb_aa.csv' delimiter ',' quto '"' WITH csv header encoding 'GBK';

导出指定条件数据

COPY (select * from tb_aa where id <=10) TO '/tmp/tb_aa.csv' WITH csv header;

##导入数据 ERROR: invalid input syntax for integer: "id,user_id,status,update_time,create_time" CONTEXT: COPY tb_aa, line 1, column id: "id,user_id,status,update_time,create_time"

导入数据不包含标题行,仅实用于csv格式

COPY tb_aa FROM '/tmp/tb_aa.csv' csv header;

\copy命令 1.普通用户权限

2.从psql客户端主机读取或写入文件数据

3.元命令

导出指定的数据或者整个表

\copy tb_aa to '/tmp/tb_aa2.csv' with csv header;
\copy tb_aa to '/tmp/tb_aa2.csv' with csv header delimiter ',';

COPY和\copy性能比较:

1.COPY性能比\copy的高

2.COPY适合数据量比较大的表,\copy适合数据量比较小的表

通过-f导入sql文本

psql -h -p database user -f /tmp/aa.sql