概要:このチュートリアルでは、CSVファイルをPostgreSQLテーブルにインポートするさまざまな方法を紹介します。
まず、personsという名前の新しいテーブルを作成し、以下のカラムを設定します。
-
id: 人のID - : 名前
-
last_name:姓 -
dob生年月日 -
email: メールアドレス
Code language: SQL (Structured Query Language) (sql)CREATE TABLE persons ( id SERIAL, first_name VARCHAR(50), last_name VARCHAR(50), dob DATE, email VARCHAR(255), PRIMARY KEY (id))

2つ目は、以下の形式のCSVデータファイルを用意します。


CSVファイルのパスは以下の通りです。 C:\sampledb\persons.csv
Downlo the persons.csvファイル
COPY文を使ってCSVファイルをテーブルにインポートする
このCSVファイルをpersonsCOPY文を使用します。
Code language: SQL (Structured Query Language) (sql)COPY persons(first_name, last_name, dob, email)FROM 'C:\sampledb\persons.csv'DELIMITER ','CSV HEADER;
PostgreSQLは次のようなメッセージを返してきます:
Code language: Shell Session (shell)COPY 2
2つの行がコピーされたということです。
persons テーブルをチェックしてみましょう。
Code language: SQL (Structured Query Language) (sql)SELECT * FROM persons;

期待通りに動作しています。
COPY文についてもう少し詳しく見てみましょう。
まず、COPYキーワードの後にカラム名でテーブルを指定します。 列の順番は、CSVファイルの列と同じでなければなりません。
Code language: SQL (Structured Query Language) (sql)COPY sample_table_nameFROM 'C:\sampledb\sample_data.csv' DELIMITER ',' CSV HEADER;
次に、CSVファイルのパスをFROMDELIMITERCSV節も指定する必要があります。
3つ目は、CSVファイルにヘッダーがあることを示すために、HEADERCOPYコマンドがデータをインポートする際には、ファイルのヘッダを無視します。
このファイルはクライアントアプリケーションではなく、PostgreSQLサーバが直接読み込まなければならないことに注意してください。 したがって、PostgreSQLサーバマシンからアクセスできる必要があります。 また、COPY文を正常に実行するためには、スーパーユーザーのアクセス権が必要となります。
CSVファイルをpgAdminでテーブルにインポートする
コンピュータからCSVファイルをPostgreSQLデータベースサーバーのテーブルにインポートする必要がある場合、pgAdminを使用することができます。
以下のステートメントは、データを再インポートできるようにpersonsテーブルを切り詰めます。
Code language: SQL (Structured Query Language) (sql)TRUNCATE TABLE persons RESTART IDENTITY;
まず、persons テーブルを右クリックし、「Import/Export…」メニュー項目を選択します。

第二に、(1)インポートに切り替えます。 (2)インポートファイルを参照し、(3)フォーマットをCSV、(4)デリミタをカンマ(,)にします。

3つ目は、カラムタブをクリックし、idカラムのチェックを外して、OKボタンをクリックします。

最後に、インポート処理が完了するのを待ちます。 以下は、インポートの進捗状況を知らせるダイアログです。

このチュートリアルでは、COPY ステートメントとpgAdminツールを使用して、CSVファイルからPostgreSQLデータベースサーバーのテーブルにデータをインポートする方法を学びました。
- このチュートリアルは役に立ちましたか?
- YesNo