2015年6月2日
ごきげんよう。
先日、PostgreSQLでCOPY文を使って
テーブルにCSVファイルのデータを投入する際に
ちょっとした罠にハマりましたので備忘録を。
# 既知の方も多いと思いますが。。
【環境】
OS:Windows8.1
PostgreSQL:9.4.2
pgAdmin:1.20.0
テキストエディタ:TeraPad 1.09
こんな普通のテーブルを作ります。
CREATE TABLE copy_test
(
id integer PRIMARY KEY,
num integer NOT NULL,
moji text NOT NULL
)
こんな変哲もないCSVデータを作ります。
で、挿入しようとしてCOPY文を実行したところエラーが・・・
ERROR: 型integerの入力構文が無効です: "1"
CONTEXT: copy_testのCOPY。行番号 1。列 id: "1"
********** エラー **********
ERROR: 型integerの入力構文が無効です: "1"
SQLステート:22P02
コンテキスト:copy_testのCOPY。行番号 1。列 id: "1"
お前は何を言ってるんだ・・(゜ω゜;)
1
が無効ってなんだ・・・
で、いろいろ調べた結果
UTF-8のCSVファイルに BOM ってのが含まれてるので
エラーを吐いているとのこと。
# BOMについては各自検索してあげてください
というわけで
テキストエディタ(今回はTeraPad)でUTF-8NにCSVファイルを変更して上書き保存。
これでCOPY文を再度実行したら、うまくいきました。
地味にハマったので気を付けましょう。
0 件のコメント:
コメントを投稿