COPY语法中format值不带引号
功能描述
Vastbase在PG兼容模式下,COPY语法中的format值可以不带引号。
注意事项
- 导入内容不能超出数值范围。
- COPY语法format值不带引号的用法仅在数据库兼容模式为PostgreSQL时支持(即数据库实例初始化时指定DBCOMPATIBILITY='PG')。
语法格式
从一个文件拷贝至一个表:
COPY table_name [ ( column_name [, ...] ) ] FROM { 'filename' | STDIN } WITH (FORMAT {CSV | TEXT | FIXED | BINARY});
把一个表拷贝到一个文件:
COPY table_name [ ( column_name [, ...] ) ] TO { 'filename' | STDOUT } WITH (FORMAT {CSV | TEXT | FIXED | BINARY}); COPY query TO { 'filename' | STDOUT } WITH (FORMAT {CSV | TEXT | FIXED | BINARY});
完整COPY语法内容及其参数说明参见COPY语法。
参数说明
column_name
可选的待拷贝字段列表。
取值范围:如果没有声明字段列表,将使用所有字段。
table_name
表的名称(可以有模式修饰)。
取值范围:已存在的表名。
STDIN
声明输入是来自标准输入。
STDOUT
声明输出打印到标准输出。
FORMAT
数据源文件的格式。
取值范围:CSV、TEXT、FIXED、BINARY。
binary形式的选项会使得所有的数据被存储/读作二进制格式而不是文本。 这比TEXT和CSV格式的要快一些,但是一个BINARY格式文件可移植性比较差。
query
查询语句。
示例
1、创建数据库,并指定兼容模式。
CREATE DATABASE my_test DBCOMPATIBILITY='PG'; \c my_test show sql_compatibility;
查看兼容性:
sql_compatibility ------------------- PG (1 row)
2、创建csv文件。
vi /tmp/import_test.csv
csv文件内容如下:
1,zhangsan,-92254.08,9月花销,2022/09/28,20:50:45 2,lisi,87758.07,8月收入,2022/09/05,14:20:15 3,wangwu,7758.07,8月报销,2022/09/01,16:43:05
3、创建表。
create table test(id integer,name varchar(100),cash money,info text,date date,time time); create table test_bak(id integer,name varchar(100),cash money,info text,date date,time time);
4、从文件导入数据并查询。
copy test from '/tmp/import_test.csv' DELIMITERS ','; select * from test;
结果显示为:
id | name | cash | info | date | time ----+----------+-------------+---------+------------+---------- 1 | zhangsan | -$92,254.08 | 9月花销 | 2022-09-28 | 20:50:45 2 | lisi | $87,758.07 | 8月收入 | 2022-09-05 | 14:20:15 3 | wangwu | $7,758.07 | 8月报销 | 2022-09-01 | 16:43:05 (3 rows)
5、binary导出数据到csv文件(format值不带引号)。
copy test to '/tmp/test_out.csv' with (format BINARY);
结果显示为:
COPY 3
6、binary导入数据并查询。
copy test_bak from '/tmp/test_out.csv' with (format BINARY); select * from test_bak;
显示结果为:
id | name | cash | info | date | time ----+----------+-------------+---------+------------+---------- 1 | zhangsan | -$92,254.08 | 9月花销 | 2022-09-28 | 20:50:45 2 | lisi | $87,758.07 | 8月收入 | 2022-09-05 | 14:20:15 3 | wangwu | $7,758.07 | 8月报销 | 2022-09-01 | 16:43:05 (3 rows)