Articles

CSVファイルをPostgreSQLテーブルにインポートする

Posted on

概要:このチュートリアルでは、CSVファイルをPostgreSQLテーブルにインポートするさまざまな方法を紹介します。

まず、personsという名前の新しいテーブルを作成し、以下のカラムを設定します。

  • id: 人のID
  • : 名前
  • last_name:
  • dob 生年月日
  • email: メールアドレス
CREATE TABLE persons ( id SERIAL, first_name VARCHAR(50), last_name VARCHAR(50), dob DATE, email VARCHAR(255), PRIMARY KEY (id))
Code language: SQL (Structured Query Language) (sql)
posgresql import csv

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

csvデータ
csvファイル

CSVファイルのパスは以下の通りです。 C:\sampledb\persons.csv

Downlo the persons.csvファイル

COPY文を使ってCSVファイルをテーブルにインポートする

このCSVファイルをpersonsCOPY文を使用します。

COPY persons(first_name, last_name, dob, email)FROM 'C:\sampledb\persons.csv'DELIMITER ','CSV HEADER;
Code language: SQL (Structured Query Language) (sql)

PostgreSQLは次のようなメッセージを返してきます:

COPY 2
Code language: Shell Session (shell)

2つの行がコピーされたということです。

persons テーブルをチェックしてみましょう。

SELECT * FROM persons;
Code language: SQL (Structured Query Language) (sql)

期待通りに動作しています。

COPY文についてもう少し詳しく見てみましょう。

まず、COPYキーワードの後にカラム名でテーブルを指定します。 列の順番は、CSVファイルの列と同じでなければなりません。

COPY sample_table_nameFROM 'C:\sampledb\sample_data.csv' DELIMITER ',' CSV HEADER;
Code language: SQL (Structured Query Language) (sql)

次に、CSVファイルのパスをFROMDELIMITERCSV節も指定する必要があります。

3つ目は、CSVファイルにヘッダーがあることを示すために、HEADERCOPYコマンドがデータをインポートする際には、ファイルのヘッダを無視します。

このファイルはクライアントアプリケーションではなく、PostgreSQLサーバが直接読み込まなければならないことに注意してください。 したがって、PostgreSQLサーバマシンからアクセスできる必要があります。 また、COPY文を正常に実行するためには、スーパーユーザーのアクセス権が必要となります。

CSVファイルをpgAdminでテーブルにインポートする

コンピュータからCSVファイルをPostgreSQLデータベースサーバーのテーブルにインポートする必要がある場合、pgAdminを使用することができます。

以下のステートメントは、データを再インポートできるようにpersonsテーブルを切り詰めます。

TRUNCATE TABLE persons RESTART IDENTITY;
Code language: SQL (Structured Query Language) (sql)

まず、persons テーブルを右クリックし、「Import/Export…」メニュー項目を選択します。

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

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

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

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

  • このチュートリアルは役に立ちましたか?
  • YesNo

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です