在 Aurora PostgreSQL Limitless Database 中使用 COPY 命令 - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 Aurora PostgreSQL Limitless Database 中使用 COPY 命令

您可以使用 psql 实用程序中的 \copy 功能将数据导入 Aurora PostgreSQL Limitless Database 并从中导出数据

使用 COPY 命令将数据加载到 Aurora PostgreSQL Limitless Database

Aurora PostgreSQL Limitless Database 与用于导入数据的 psql 实用程序中的 \copy 功能兼容。

与 Aurora PostgreSQL 一样,在 Limitless Database 中,不支持以下操作:

  • 从 SSH 直接访问数据库实例 – 您无法将数据文件(例如 .csv 格式的文件)复制到数据库实例主机并从该文件运行 COPY

  • 在数据库实例上使用本地文件 – 使用 COPY ... FROM STDINCOPY ... TO STDOUT

PostgreSQL 中的 COPY 命令具有处理本地文件 (FROM/TO) 和使用客户端与服务器之间的连接传输数据的选项 (STDIN/STDOUT)。有关更多信息,请参阅 PostgreSQL 文档中的 COPY

PostgreSQL psql 实用程序中的 \copy 命令适用于运行 psql 客户端的计算机上的本地文件。它会在您连接到的远程(例如,Limitless Database)服务器上调用相应的 COPY ... FROM STDINCOPY ... FROM STDOUT 命令。它从本地文件向 STDIN 读取数据,或从 STDOUT 向本地文件写入数据。

将数据拆分为多个文件

数据存储在 Aurora PostgreSQL Limitless Database 中的多个分片上。要使用 \copy 加快数据加载速度,您可以将数据拆分为多个文件。然后,通过并行运行单独的 \copy 命令,独立导入每个数据文件。

例如,您有一个 CSV 格式的输入数据文件,其中有 300 万行需要导入。您可以将文件拆分成多个块,每个块容纳 200,000 行(15 个块):

split -l200000 data.csv data_ --additional-suffix=.csv -d

这样就会生成 data_00.csvdata_14.csv 文件。然后,您可以使用 15 个并行 \copy 命令导入数据,例如:

psql -h dbcluster.limitless-111122223333.aws-region.rds.amazonaws.com -U username -c "\copy test_table from '/tmp/data_00.csv';" postgres_limitless & psql -h dbcluster.limitless-111122223333.aws-region.rds.amazonaws.com -U username -c "\copy test_table FROM '/tmp/data_01.csv';" postgres_limitless & ... psql -h dbcluster.limitless-111122223333.aws-region.rds.amazonaws.com -U username -c "\copy test_table FROM '/tmp/data_13.csv';" postgres_limitless & psql -h dbcluster.limitless-111122223333.aws-region.rds.amazonaws.com -U username -c "\copy test_table FROM '/tmp/data_14.csv';" postgres_limitless

使用这种技术,导入相同数量数据的速度大约是使用单个 \copy 命令的 10 倍。

使用 COPY 命令将 Limitless Database 数据复制到文件

您可以使用 \copy 命令将数据从无限表复制到文件中,如以下示例所示:

postgres_limitless=> \copy test_table TO '/tmp/test_table.csv' DELIMITER ',' CSV HEADER;