2011年3月25日金曜日

PostgreSQLにCSVからデータ読込

PostgreSQL 8.4で確認

SQL SHELLから、以下のコマンドを実行する

COPY tablename 'C:/hoge/hogehoge.csv' WITH CSV;

ヘッダー付の場合はこんな感じ。

COPY tablename 'C:/hoge/hogehoge.csv' WITH CSV HEADER;

パスは"/"の代わりに"\\"でも大丈夫。二つ続けるのは一つだとエスケープされてしまうため。

ただ、エラーが出るのでパスの前に"E"を付けること。こんな感じ。

COPY tablename E'C:\\hoge\\hogehoge.csv' WITH CSV HEADER;

パスに日本語が入ってるとダメみたい。

あと、読込ファイルとDBの文字コードは予め同じものにしておくこと。

Edit: なんかSQL SHELLの文字コードも合わせておく必要があるみたい。SQL SHELL起動時に変更するか、以下のコマンドを実行する。

SET client_encoding='UTF8';