更新时间:2025-05-29 GMT+08:00
推荐CSV格式
CSV格式通过换行符将整个文件划分为多条记录,再通过分隔符(delimiter,默认值为逗号',')将每条记录划分为多个字段,每一个字段可以通过封闭符(quote,默认值为引号'"')包裹起来。通过这种方式,无需对特殊字符进行转义,即可解决字段内容中出现的行结束符和分隔符等特殊字符问题。同时它是一项通用标准,具备跨平台兼容性和行业普适性,所以优先推荐采用该格式。
导出命令:
1 2 3 |
--data_source可以是一个表名称,也可以是一个select语句。 --server_encoding 可以通过show server_encoding获得。 COPY {data_source} TO '/path/export.csv' delimiter ',' quote '"' escape '"' ENCODING {server_encoding} CSV; |
导入命令:
1 2 3 |
--data_destination只能是一个表名称。 --file_encoding为该文件导出时指定的编码格式。 COPY {data_destination} FROM '/path/export.csv' delimiter ',' quote '"' escape '"' ENCODING {file_encoding} CSV; |

若用户自行生成CSV数据文件并导入数据库,需确保数据文件严格遵循CSV格式的标准规范,同时保证在使用COPY命令时,传入的分隔符、封闭符、行结束符等参数准确无误。
示例
- 数据准备。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
gaussdb=# CREATE DATABASE db1 ENCODING='UTF-8' LC_COLLATE='en_US.UTF-8' LC_CTYPE ='en_US.UTF-8' DBCOMPATIBILITY = 'ORA'; CREATE DATABASE gaussdb=# \c db1 Non-SSL connection (SSL connection is recommended when requiring high-security) You are now connected to database "db1" as user "omm". db1=# CREATE TABLE test_copy(id int, name text); NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'id' as the distribution column by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. CREATE TABLE db1=# INSERT INTO test_copy VALUES(1, 'aaa'); INSERT 0 1 db1=# INSERT INTO test_copy VALUES(2, e'bb\nb'); INSERT 0 1 db1=# INSERT INTO test_copy VALUES(3, e'cc\tc'); INSERT 0 1 db1=# INSERT INTO test_copy(name) VALUES('ddd'); INSERT 0 1 db1=# INSERT INTO test_copy VALUES(5, e'ee\\e'); INSERT 0 1 db1=# INSERT INTO test_copy VALUES(6, ','); INSERT 0 1 db1=# INSERT INTO test_copy VALUES(7, '"'); INSERT 0 1 db1=# SELECT * FROM test_copy; id | name ----+----------- 1 | aaa 2 | bb + | b 3 | cc c | ddd 5 | ee\e 6 | , 7 | " (7 rows)
- 整表数据导出。
1 2 3 4 5 6 7
db1=# COPY test_copy TO '/home/xy/test.csv' DELIMITER ',' QUOTE '"' ESCAPE '"' ENCODING 'UTF-8' CSV; COPY 7
导出的CSV文件内容如下所示:
1 2 3 4 5 6 7 8
1,aaa 2,"bb b" 3,cc c ,ddd 5,ee\e 6,"," 7,""""
- 数据导入。
db1=# TRUNCATE test_copy; TRUNCATE TABLE db1=# COPY test_copy FROM '/home/xy/test.csv' DELIMITER ',' QUOTE '"' ESCAPE '"' ENCODING 'UTF-8' CSV; COPY 7
- 自定义数据集导出:导出test_copy中id不为空所有行的name列。
1 2 3 4 5 6 7 8
db1=# COPY (SELECT name FROM test_copy WHERE id IS NOT NULL) TO '/home/xy/test.csv' DELIMITER ',' QUOTE '"' ESCAPE '"' ENCODING 'UTF-8' CSV; COPY 6
导出的CSV文件内容如下所示:
1 2 3 4 5 6 7
aaa "bb b" cc c ee\e "," """"
父主题: 典型场景