更新时间:2025-05-29 GMT+08:00

导入导出的数据文件在GSQL客户端的场景

当使用GSQL执行COPY命令导出数据时,生成的数据文件默认存储在数据库服务端,这可能导致用户获取数据文件时面临一定不便。针对此场景,建议采用\COPY命令进行操作,该命令会将导出的数据文件直接生成在客户端本地。

COPY与\COPY的区别

  1. 数据文件的位置差异:COPY导入生成的文件与导入时读取的文件均在服务端节点上,而\COPY导入生成的文件与导入时读取的文件均在客户端节点上。
  2. 性能差异:由于\COPY是在客户端读取文件流后传输给服务端完成数据的导入,所以性能上会比COPY导入低。
  3. 功能差异:\COPY在COPY的基础上额外支持基于客户端并行导入的能力,具体的规格约束可参考《工具参考》中“数据库连接工具 > gsql连接数据库 > 元命令参考”章节。

\COPY命令示例

\COPY的导出命令与COPY命令的区别为把命令中的COPY换成\COPY即可,此处提供一个简单的CSV格式COPY导出命令转换为\COPY导出命令的示例:

1
2
3
4
5
6
7
--COPY命令。
COPY {data_source} to '/path/export.csv' encoding {server_encoding} csv;
COPY {data_source} from '/path/export.csv' encoding {server_encoding} csv;

--对应的\COPY命令。
\COPY {data_source} to '/path/export.csv' encoding {server_encoding} csv;
\COPY {data_source} from '/path/export.csv' encoding {server_encoding} csv;

并行导入命令示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
--data_destination只能是一个表名称
--file_encoding表示该二进制文件导出时指定的编码格式。
--parallel_num表示数据导入时的客户端数量,在集群资源较为充足时建议此值为8

--CSV格式的导入命令
\COPY {data_destination} FROM '/path/export.txt' ENCODING {file_encoding} PARALLEL {parallel_num} CSV;

--FIXED格式的导入命令
\COPY {data_destination} FROM '/path/export.txt' ENCODING {file_encoding} PARALLEL {parallel_num} FIXED;

--TEXT格式的导入命令
\COPY {data_destination} FROM '/path/export.txt' ENCODING {file_encoding} PARALLEL {parallel_num};