使用 \copy 命令将数据导入 PostgreSQL 数据库实例上的表 - Amazon Relational Database Service

使用 \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 会输出错误消息。

使用 \copy 元命令,在数据库预览环境中通过 psql 命令创建新的数据库实例,如以下示例所示。该示例使用 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 页面内的元命令部分。