

# \$1copy コマンドを使用して PostgreSQL DB インスタンスのテーブルにデータをインポートする
<a name="PostgreSQL.Procedural.Importing.Copy"></a>

PostgreSQL の `\copy` コマンドは、`psql` の対話型クライアントツールでメタコマンドを利用できます。`\copy` を使うと、RDS for PostgreSQL DB インスタンスで、テーブルにデータをインポートできます。`\copy` コマンドを使うには、まず対象のDB インスタンスにテーブル構造を作成して、`\copy` がデータをコピーする先を用意する必要があります。

`\copy` を使用すると、クライアントのワークステーションにエクスポートして保存しておいた、カンマ区切り値 (CSV) 形式のファイルなどから、データを読み込むことができます。

CSV データを対象の RDS for PostgreSQL DB インスタンスにインポートするには、まず `psql` を使用して、対象の DB インスタンスに接続します。

```
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` コマンドで、データベースプレビュー環境に新しい DB インスタンスを作成します。この例では、ソーステーブル名として *source-table*、.csv ファイルとして *source-table.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)」ページにある、「*メタコマンド*」セクションを参照してください。