

# 使用 \$1copy 命令将数据导入 PostgreSQL 数据库实例上的表
<a name="PostgreSQL.Procedural.Importing.Copy"></a>

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* 页面内的[元命令](http://www.postgresql.org/docs/current/static/app-psql.html)部分。