postgresql数据处理

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_name csv,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

Guess you like

Origin blog.csdn.net/weixin_44375561/article/details/120747457