PostgreSQL テーブルに COPY コマンドを使ってヘッダー付き CSV ファイルをロードする
PostgreSQL テーブルに CSV ファイルからヘッダー付きでデータをロードする方法
手順:
必要なライブラリのインストール:
CSV ファイルの準備:
ロードする CSV ファイルが、以下の条件を満たしていることを確認してください。
- カンマ (
,
) で区切られたデータであること - 最初の行にヘッダー情報が含まれていること
- 文字列データは二重引用符 ("") で囲まれていること
- NULL 値は空文字 (
""
) で表されていること
- カンマ (
COPY コマンドの実行:
以下のコマンドを使用して、CSV ファイルから PostgreSQL テーブルにデータをロードします。
COPY table_name (column1, column2, ...) FROM 'path/to/file.csv' WITH CSV HEADER;
table_name
: データをロードするテーブルの名前column1, column2, ...
: テーブルの列名。CSV ファイルのヘッダー行と一致する順序で指定する必要があります。path/to/file.csv
: CSV ファイルのパス
例:
customers
テーブルにcustomer_id
,name
,email
という列を持つ CSV ファイルcustomers.csv
をロードする場合、以下のコマンドを実行します。COPY customers (customer_id, name, email) FROM '/path/to/customers.csv' WITH CSV HEADER;
補足:
- PostgreSQL サーバーと CSV ファイルが別のマシンにある場合は、
FROM
句にホスト名とファイルパスを指定する必要があります。 - テーブルに既存のデータがある場合は、
TRUNCATE TABLE table_name
コマンドを使用して最初に削除してから、CSV ファイルをロードすることをお勧めします。 - エラーが発生した場合は、
psql
の\copy
コマンドで詳細なエラーメッセージを確認できます。
customer_id,name,email
1,John Doe,[email protected]
2,Jane Smith,[email protected]
3,Peter Jones,[email protected]
PostgreSQL テーブル:
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL
);
ロードコマンド:
COPY customers (customer_id, name, email)
FROM '/path/to/customers.csv'
WITH CSV HEADER;
説明:
- このコードは、
customers.csv
という名前の CSV ファイルからデータをcustomers
テーブルにロードします。 - CSV ファイルには、
customer_id
,name
,email
という 3 つの列が含まれています。 COPY
コマンドのWITH CSV HEADER
オプションは、ヘッダー行を使用してテーブルの列を自動的にマッピングすることを指示します。
実行結果:
COPY 3 rows.
- このコードは、PostgreSQL サーバーが同じマシンにある場合にのみ機能します。
PostgreSQL に CSV ファイルをロードするその他の方法
pgLoader を使用する:
pgLoader は、高速かつ効率的に CSV ファイルを PostgreSQL テーブルにロードできるサードパーティ製のツールです。多くの追加機能を提供しており、大容量の CSV ファイルを扱う場合に特に役立ちます。
Python ライブラリを使用する:
psycopg2 や sqlalchemy などの Python ライブラリを使用して、PostgreSQL とやり取りし、CSV ファイルをロードすることができます。これらのライブラリは、より複雑なデータ処理タスクを実行する場合に柔軟性を提供します。
GUI ツールを使用する:
pgAdmin や DBeaver など、PostgreSQL を管理するための GUI ツールには、通常、CSV ファイルのインポート機能が組み込まれています。これらのツールは、特にコーディングに慣れていないユーザーにとって使いやすいインターフェースを提供します。
最適な方法の選択:
使用する方法は、データの量、ニーズの複雑さ、スキルセットによって異なります。
- 少量のデータをロードする場合 は、
COPY
コマンドが最も簡単な方法です。 - 大容量のデータをロードする場合 または高度な処理が必要な場合は、pgLoader や Python ライブラリなどのツールを使用することを検討してください。
- GUI ツール は、ユーザーにとって使いやすいインターフェースを提供しますが、他の方法よりも処理速度が遅くなる場合があります。
postgresql csv postgresql-copy