使用 \copy 命令将数据导入 PostgreSQL 数据库实例上的表 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用 \copy 命令将数据导入 PostgreSQL 数据库实例上的表

PostgreSQL \copy 命令是可从 psql 交互式客户端工具获取的元命令,。您可以使用 \copy 将数据导入 RDS for PostgreSQL 数据库实例上的表中。若想使用 \copy 命令,您需要先在目标数据库实例上创建表结构,以便 \copy 具有待复制数据的目标。

您可以使用 \copy 从逗号分隔值 (CSV) 文件(如已导出并保存到客户端工作站的文件)中加载数据。

要将 CSV 数据导入目标 RDS for PostgreSQL 数据库实例,请先使用 psql 连接至目标数据库实例。

psql --host=db-instance.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=target-db

然后使用以下参数运行 \copy 命令来标识数据目标及其格式。

  • target_table:应接收从 CSV 文件复制的数据的表名称。

  • column_list:表的列规范。

  • 'filename':本地工作站上 CSV 文件的完整路径。

\copy target_table from '/path/to/local/filename.csv' WITH DELIMITER ',' CSV;

如果 CSV 文件包含列标题信息,则可以使用此版本的命令和参数。

\copy target_table (column-1, column-2, column-3, ...) from '/path/to/local/filename.csv' WITH DELIMITER ',' CSV HEADER;

如果 \copy 命令失败,PostgreSQL 会输出错误消息。

您也可以结合使用 psql 命令和 \copy 元命令,如以下示例所示。该示例使用 source-table 作为源表名称,使用 source-table.csv 作为 .csv 文件,使用 target-db 作为目标数据库:

对于 Linux、macOS 或 Unix:

$psql target-db \ -U <admin user> \ -p <port> \ -h <DB instance name> \ -c "\copy source-table from 'source-table.csv' with DELIMITER ','"

对于 Windows:

$psql target-db ^ -U <admin user> ^ -p <port> ^ -h <DB instance name> ^ -c "\copy source-table from 'source-table.csv' with DELIMITER ','"

有关 \copy 命令的完整详细信息,请参阅 PostgreSQL 文档中 psql 页面内的元命令部分。