2008-06-13
PostgreSQL CSVファイルからのインポート
EC-CUBEのカスタマイズをしていると、テストデータを作成して動きを確認したいことがよくあります。しかしpgAdminでは、プライマリキーのないテーブルには直接データを作成・編集することができません。参考。
それでは、EXCELにて作成したcsvファイルをどうにかインポートできないものか。調べてみたところ、メニューなどからのインポートはできないみたいですが、「COPY」というSQLコマンドを使えば可能なようです。
COPY : PostgreSQL日本語ドキュメント http://www.postgresql.jp/document/current/html/sql-copy.html
「tablename」という名前のテーブルに「testdata.csv」からインポートする場合のSQL例。
COPY tablename FROM 'C:/test/testdata.csv' WITH CSV;
OSがWindowsであっても、パスの指定は「/」で問題ないようです。ただし以下の場合はだめでした。
-- 「\」1つではエスケープされるのでだめ COPY tablename FROM 'C:\test\testdata.csv' WITH CSV; -- WARNING: nonstandard use of escape in a string literal -- ERROR: could not open file "C:testtestdata.csv" for reading: No such file or directory -- 「\」2つでもなぜかエラーが出てだめ、ではなくて、警告が出るが実行はOK COPY tablename FROM 'C:\\test\\testdata.csv' WITH CSV; -- WARNING: nonstandard use of \\ in a string literal -- HINT: Use the escape string syntax for backslashes, e.g., E'\\'. -- ヒントにあるように「E」をつければ警告なしで実行OK COPY tablename FROM E'C:\\test\\testdata.csv' WITH CSV; -- パスに日本語が入っているとだめ(マルチバイトへの何らかの対応が必要?) COPY tablename FROM 'C:/Documents and Settings/User/デスクトップ/testdata.csv' WITH CSV; -- ERROR: could not open file "C:/Documents and Settings/User/デスクトップ/testdata.csv" for reading: No such file or directory
あと、文字コードがファイルとDBで異なっていてもエラーとなります。
-- ERROR: invalid byte sequence for encoding "UTF8"
EXCELで作成したCSVだとShift-JISになってしまうので、エディタで変換して保存し直すか、
SET client_encoding TO 'SJIS'; COPY tablename FROM 'C:/test/testdata.csv' WITH CSV;
とすれば大丈夫なようです。以下サイトが参考になります。
tomimemo - postgresqlメモ http://www3.atwiki.jp/tmogmni/pages/21.html#id_9e61ee0c
途中、パスについての部分は記憶を頼りに書いたので間違いがあるかもです。発覚次第訂正いたします。
※6/14追記 再度試した結果、加筆・修正しました。
関連記事
トラックバック - http://d.hatena.ne.jp/deeeki/20080613/pgsqlcopycsv
リンク元
- 816 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4DBJP_ja___JP221&q=sql+copy+インポート
- 537 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCgQFjAA&url=http://d.hatena.ne.jp/deeeki/20080613/pgsqlcopycsv&ei=iUQnT4LAO-yUmQWn6q23Aw&usg=AFQjCNEBpSWWKvarS75trPJBFT2RgJif-A
- 442 http://www.google.co.jp/search?hl=ja&source=hp&q=postgresql+csv+入力&lr=&aq=2&oq=postgresql+csv
- 405 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=dcI&q=postgresql+ファイルから&btnG=検索&lr=lang_ja
- 404 http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CBkQFjAA&url=http://d.hatena.ne.jp/deeeki/20080613/pgsqlcopycsv&rct=j&q=postgresql csv import&ei=vMCJTNKvOYS6vQOYz6nkCQ&usg=AFQjCNEBpSWWKvarS75trPJBFT2RgJif-A
- 312 http://www.google.co.jp/search?sourceid=chrome&ie=UTF-8&q=postgres+csv+インポート
- 228 http://www.google.co.jp/search?hl=ja&q=postgresql+インポート&lr=
- 223 http://www.google.co.jp/search?q=Postgresql+インポート+CSV&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 195 http://www.google.co.jp/url?sa=t&rct=j&q=postgresql csv import&source=web&cd=1&ved=0CDEQFjAA&url=http://d.hatena.ne.jp/deeeki/20080613/pgsqlcopycsv&ei=-W6fTsj3L6itiAeXuN3vBg&usg=AFQjCNEBpSWWKvarS75trPJBFT2RgJif-A&sig2=Ara_PaADB5s5-_UEyC8IC
- 190 http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CBgQFjAA&url=http://d.hatena.ne.jp/deeeki/20080613/pgsqlcopycsv&rct=j&q=postgres csv取り込み&ei=-3ZnTezcO4-cvgP06N3kAg&usg=AFQjCNEBpSWWKvarS75trPJBFT2RgJif-A




