PostgreSQL 之 copy 命令基础


作者:瀚高PG实验室 (Highgo PG Lab)-波罗

COPY命令概述

copy 命令用于表与文件(和标准输出,标准输入)之间的相互拷贝;

copy to由表至文件,copy from由文件至表;

copy 命令始终是到数据库服务端找文件,以超级用户执行导入导出权限要求很高,适合数据库管理员操作;

\copy 命令可在客户端执行导入客户端的数据文件,权限要求没那么高,适合开发人员,测试人员使用。

COPY基本语法参考:

Name

COPY -- copy data between a file and a table

Synopsis

COPY table_name [ ( column_name [, ...] ) ]

    FROM { 'filename' | PROGRAM 'command' | STDIN }

    [ [ WITH ] ( option [, ...] ) ]

COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }

    TO { 'filename' | PROGRAM 'command' | STDOUT }

    [ [ WITH ] ( option [, ...] ) ]

where option can be one of:

    FORMAT format_name

    OIDS [ boolean ]

    FREEZE [ boolean ]

    DELIMITER 'delimiter_character'

    NULL 'null_string'

    HEADER [ boolean ]

    QUOTE 'quote_character'

    ESCAPE 'escape_character'

    FORCE_QUOTE { ( column_name [, ...] ) | * }

    FORCE_NOT_NULL ( column_name [, ...] )

    ENCODING 'encoding_name'

COPY命令示例:

表与文件(和标准输出,标准输入)之间的相互拷贝

[postgres@db2 ttdata]$ cat test_copy.txt

1 a

2 b

3 c

[postgres@db2 ttdata]$ psql

psql (9.5.7)

Type "help" for help.

testdb=# create table test_copy(id int4,name varchar(32));

testdb=# \copy test_copy from /pgdata/ttdata/test_copy.txt ;

testdb=#\copy test_copy to /pgdata/ttdata/test_copy1.txt ;

testdb=#\copy test_copy to /pgdata/ttdata/test_copy1.txt with csv;

testdb=#\copy test_copy from /pgdata/ttdata/test_copy1.txt with csv;

testdb=# copy test_copy from '/pgdata/ttdata/test_copy1.txt' with csv;

总结:

copy与\copy命令都能实现数据文件与表的数据传递,两者都在psql环境下执行。

主要不同在于数据文件的路径寻址:

1)copy 命令始终是到数据库服务端找文件;

2)\copy 命令可在客户端执行导入客户端的数据文件。

另外,常用的数据文件列之间默认是空格,可以用csv格式的传递,列之间以分号隔离。

参考链接:

http://francs3.blog.163.com/blog/static/40576727201412135333388/

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值