データベースにcsvデータが入らない時に試してほしいこと

こんにちは。
今日、インターンでデータベース(PostgreSQL)にcsvファイルのデータを入れようとしたら、以下のようなエラーが出てデータが入りませんでした。。。

ERROR: data line too long. likely due to invalid csv data
CONTEXT: COPY hogehoge, line 963527: “------------------”

そのため、csvファイルをpandasで読み込み、該当箇所を確認してみました。すると、カラムにダブルクオーテーション(”)が入っていることが原因だと推察しました。他にも、以下の文字がcsvファイルに含まれているとデータを取り込むときにエラーになりやすいようです。

  • シングルクォーテーション:SQL命令の文字列の括りとして使われているため、SQL命令を正しく解釈されない場合がある
  • ダブルクォーテーション:CSVデータの文字列の括りとして使われているため、DBの取込時に正しく解釈されない場合がある
  • ¥マーク:¥マークはエスケープ文字として扱われるため、DBの取込時に正しく解釈されない場合がある

(引用:株式会社ギックス https://www.graffe.jp/blog/821/

解決策

csvをjupyter notebook(Pythonが使えればそれ以外でも可)を使って pandasのデータフレームとして読み込んで、それをcsv吐き出してデータベースに読み込ませる

そうすると、中身は一切いじっていないはずなのに、うまくデータベースに入るのです。
原理は僕も詳しくわかっていないのですが、おそらくpandasのデータフレームとして読み込んだ際に何らかの処理をしてくれたのでしょう。
詳しい挙動はまた調べて追記したいと思いますが、同じことでお困りの際はぜひ試してみてください。