PostgreSQL 之 copy 命令基础
2018-01-26 00:15
211 查看
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/
By 波罗
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/
By 波罗
相关文章推荐
- PostgreSQL中copy命令以二进制形式传输数据的二进制格式
- PostgreSQL批量导入数据 COPY命令
- postgreSql基础命令及linux下postgreSql命令 .
- 晨曦之光 postgreSql基础命令及linux下postgreSql命令
- PostgreSQL基础命令
- postgreSql基础命令及linux下postgreSql命令
- COPY命令:为PostgreSQL批量导入数据
- PostgreSQL中copy命令以二进制形式传输数据的二进制格式
- postgreSql基础命令及linux下postgreSql命令
- Postgresql基础操作3-常用SQL命令
- postgreSql基础命令及linux下postgreSql命令
- postgresql基础命令
- postgresql图片等二进制数据的存储(copy命令,bytea类型)
- PostgreSQL基础命令【转】
- postgresql基础命令
- COPY命令:为PostgreSQL批量导入数据
- PostgreSQL Copy 命令
- PostgreSQL COPY命令
- postgreSql基础命令及linux下postgreSql命令
- 转载:postgreSql基础命令及linux下postgreSql命令