概要:このチュートリアルでは、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ファイルをpersons
COPY
文を使用します。
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ファイルのパスをFROM
DELIMITER
CSV
節も指定する必要があります。
3つ目は、CSVファイルにヘッダーがあることを示すために、HEADER
COPY
コマンドがデータをインポートする際には、ファイルのヘッダを無視します。
このファイルはクライアントアプリケーションではなく、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