- ベストアンサー
テーブルにcsvファイルをインポートできない
かなり困っています。REDHAT LINUXでpostgresのテーブルにpsqlからのCOPYコマンドでcsvファイルのデータをインポートしようとしているのですが、文字数オーバーのエラーがでてしまいます。テーブルは2列で1つ目の列はCHAR(10)で2列目はINT4型です。csvファイルの内容はとりあえず1行だけ入れていて「"1234567890","1234"」を入れています。コマンドはpsqlで「COPY テーブル FROM 'ファイルのパス' USING DELIMITER ","」で行いました。エラーはおそらくインポートしたデータがおかしくなって変な桁数になっているのですが、どういうふうにおかしくなっているのかがよくわからないので対策できません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
案1)エディタ等を使って、二重引用符を除去してからインポートさせる。 案2)インポートするのに十分なレコード長をもったインポート専用テーブルを作成して、そこに一旦インポートさせてから、適当に加工して目的のテーブルにinsertする。 案3) copy with csvが使えるバージョンにあげる。 ――とか。
その他の回答 (1)
- morizogondora
- ベストアンサー率25% (1/4)
「"」(ダブルクォーテーション)も文字数に換算されているので、 「"1234567890"」は12文字のデータをINSERTしようとしてエラーになっているのだと思います。 また、2カラム目はINTEGERとのことなので、そもそもクォーテーションやダブルクォーテーションで囲ったらよくないです。^^ ダブルクォーテーションを外して試してみてください。
お礼
こんにちは。おかげさまで解決しました。ダブルコーテーションも原因でしたが、CSVのデータの行の一番後ろに改行コードが入っていてそれがINTEGER型のカラムでひっかかっていました。結局はアクセス経由のODBCでのインポートになりました(~~)
お礼
こんにちは。おかげさまで解決しました。アクセス経由のODBCでのインポートすることになりました。確かに別テーブル経由だとコマンド一発でできそうでスッキリしますのでそちらのほうがよかったかもしれませんね。