Warning: Trying to access array offset on value of type bool in /home/c4323839/public_html/tak-lab.net/wp-content/plugins/only-tweet-like-share-and-google-1/tweet-like-plusone.php on line 258

Warning: Undefined array key 0 in /home/c4323839/public_html/tak-lab.net/wp-content/plugins/only-tweet-like-share-and-google-1/tweet-like-plusone.php on line 245
DB Tips

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


Warning: Undefined variable $cs1 in /home/c4323839/public_html/tak-lab.net/wp-content/plugins/only-tweet-like-share-and-google-1/tweet-like-plusone.php on line 813

Warning: Undefined variable $cs2 in /home/c4323839/public_html/tak-lab.net/wp-content/plugins/only-tweet-like-share-and-google-1/tweet-like-plusone.php on line 813
仕事でちょっとハマったのでメモ。
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を改変するなど。
プログラムを編集する場合は
こちらが大変参考になりました。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です