共计 3434 个字符,预计需要花费 9 分钟才能阅读完成。
这篇文章主要讲解了“怎么使用 PostgreSQL 中的 COPY 命令”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“怎么使用 PostgreSQL 中的 COPY 命令”吧!
Copy 命令在 PG 12 有所增强, 在 COPY FROM 时可添加 WHERE 条件过滤.
PG 11
Copy 命令
testdb=# \help copy
Command: COPY
Description: copy data between a file and a table
Syntax:
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 [, ...] )
FORCE_NULL ( column_name [, ...] )
ENCODING encoding_name
简单使用
testdb=# drop table if exists t_copy;
DROP TABLE
testdb=# CREATE TABLE t_copy(id int,c1 varchar(20));
CREATE TABLE
testdb=# insert into t_copy SELECT x, c1- ||x FROM generate_series(1, 1000) AS x;
INSERT 0 1000
testdb=#
testdb=# COPY t_copy TO /tmp/data/t_copy.txt with DELIMITER |
COPY 1000
testdb=# drop table if exists t_import;
DROP TABLE
testdb=# CREATE TABLE t_import(id int,c1 varchar(20));
CREATE TABLE
testdb=# COPY t_import FROM /tmp/data/t_copy.txt with DELIMITER |
COPY 1000
testdb=# select * from t_import limit 10;
id | c1
----+-------
1 | c1-1
2 | c1-2
3 | c1-3
4 | c1-4
5 | c1-5
6 | c1-6
7 | c1-7
8 | c1-8
9 | c1-9
10 | c1-10
(10 rows)
不支持 WHERE 条件过滤
testdb=# COPY t_import FROM /tmp/data/t_copy.txt with DELIMITER | where id 5;
ERROR: syntax error at or near where
LINE 1: ...t FROM /tmp/data/t_copy.txt with DELIMITER | where id ...
PG 12
COPY 命令语法
[local]:5432 pg12@testdb=# \help copy
Command: COPY
Description: copy data between a file and a table
Syntax:
COPY table_name [ ( column_name [, ...] ) ]
FROM { filename | PROGRAM command | STDIN }
[ [ WITH ] ( option [, ...] ) ]
[ WHERE condition ]
COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }
TO { filename | PROGRAM command | STDOUT }
[ [ WITH ] ( option [, ...] ) ]
where option can be one of:
FORMAT format_name
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 [, ...] )
FORCE_NULL ( column_name [, ...] )
ENCODING encoding_name
URL: https://www.postgresql.org/docs/12/sql-copy.html
支持 WHERE 条件过滤
[local]:5432 pg12@testdb=# drop table if exists t_copy;
DROP TABLE
Time: 50.327 ms
[local]:5432 pg12@testdb=# CREATE TABLE t_copy(id int,c1 varchar(20));
CREATE TABLE
Time: 5.038 ms
[local]:5432 pg12@testdb=# insert into t_copy SELECT x, c1- ||x FROM generate_series(1, 1000) AS x;
INSERT 0 1000
Time: 16.422 ms
[local]:5432 pg12@testdb=#
[local]:5432 pg12@testdb=# COPY t_copy TO /tmp/data/t_copy.txt with DELIMITER |
COPY 1000
Time: 4.795 ms
[local]:5432 pg12@testdb=# drop table if exists t_import;
DROP TABLE
Time: 4.798 ms
[local]:5432 pg12@testdb=# CREATE TABLE t_import(id int,c1 varchar(20));
CREATE TABLE
Time: 2.462 ms
[local]:5432 pg12@testdb=# COPY t_import FROM /tmp/data/t_copy.txt with DELIMITER | WHERE id 5;
COPY 4
Time: 4.842 ms
[local]:5432 pg12@testdb=# select * from t_import;
id | c1
----+------
1 | c1-1
2 | c1-2
3 | c1-3
4 | c1-4
(4 rows)
Time: 6.103 ms
感谢各位的阅读,以上就是“怎么使用 PostgreSQL 中的 COPY 命令”的内容了,经过本文的学习后,相信大家对怎么使用 PostgreSQL 中的 COPY 命令这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!
正文完
发表至: 数据库
2023-07-26