VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

COPY语法中format值不带引号

功能描述

Vastbase在PG兼容模式下,COPY语法中的format值可以不带引号。

注意事项

  • 导入内容不能超出数值范围。
  • COPY语法format值不带引号的用法仅在数据库兼容模式为PostgreSQL时能够使用(即创建DB时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)