postgresにTSVファイルからデータをインポートする場合の注意

仕事でちょっとハマったのでメモ。
TSVファイルをpostgresに読み込ませたかったんだけど、
これがなかなかうまくいかなかった。
準備として以下の2点。
・postgresにはあらかじめテーブルを用意しておく。
・TSVファイルのデータはテーブル定義に合う形で用意する。
ここまでやったらpostgresにログインしてcopyコマンドを使い読み込ませるんだけど、
ここで謎のsyntax err
私の場合、
invalid input syntax for integer
ってのが出ました。
 
いったい何を言っているんだ。
 
データとテーブル定義を見直してみたけど型に食い違いは無い。
色々調べてみたけど原因がわからず。
TSVデータはもともとExcelでデータを作成し、
それをVBAを使って吐き出したものなのですが
この時に単純にUTF-8を文字コードに指定していました。
textTsv.Charset = “UTF-8″
こんな感じで。
この時どうやらVBAで文字コードをUTF-8にすると、
BOM付きのデータが生成されるようです。
 
まあこれが問題だったようで、
TSVファイルをpostersに読み込ませるときにBOMの情報まで読もうとしているがためにsyntax errが発生するようです。
対策としては単純にエディタで開いてBOMを消す、
もしくはBOMをつけないようにVBAを改変するなど。
プログラムを編集する場合は
こちらが大変参考になりました。