更新时间: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
--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
--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};
--data_destination 只能是一个表名称
--file_encoding 表示该二进制文件导出时指定的编码格式
--parallel_num 表示数据导入时的客户端数量,在集群资源较为充足时建议此值为8。