\copy コマンドを使用して PostgreSQL DB インスタンスのテーブルにデータをインポートする - Amazon Relational Database Service

\copy コマンドを使用して PostgreSQL DB インスタンスのテーブルにデータをインポートする

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 はエラーメッセージを出力します。

また次の例で示すように、psql コマンドと \copy メタコマンドを組み合わせることができます。この例では、ソーステーブル名として 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」ページにある、「メタコマンド」セクションを参照してください。