- 締切済み
csvファイルについて
javaで、csvファイルを読み取り、データベースにいれるツールを作成しています。 csvファイルを読み込む部分でつまづいてしまったので、どなたかご教授ください! 指定されたcsvファイルを一行ずつ取り込むのですが、一つの情報が2行以上になってしまうデータがいくつかあり、ファイルチェックとして、1つ目のカラムは何文字のものだとかしているけれども、その前の行の続きに当たる行が、その条件から外れてしまい、エラーになってしまいます。(当たり前ですが、、、) なぜ、csvファイルが一行に収まらないのかが、わかずですし、それを一行として読み込むことができるのかが不明で困っております。 原因や対処法が分かれば、教えていただければと思います。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- wormhole
- ベストアンサー率28% (1626/5665)
他の方々も書かれていますが、そのCSVファイルの仕様を確認された方がよろしいかと思います。 元々CSVファイルは各フィールドが , で区切られているデータ形式程度の意味しかなく取り扱うソフトウェアよって、それ以外の部分については差異があります。 それまでの実装の傾向を元に後付けで、RFC4180 で仕様化されてはいるんですけど、それで全部をまかなえるわけじゃありませんので。 https://ja.wikipedia.org/wiki/Comma-Separated_Values https://datatracker.ietf.org/doc/html/rfc4180
- dell_OK
- ベストアンサー率13% (766/5720)
Javaではありませんが、私も同じような経験があります。 元データに説明文などを入力する改行可能な項目がありました。 それをCSV出力するプログラムが改行コードをそのまま出力していたため、読み込む時に問題になりました。 その時は改行コードをエスケープしてCSVを作り直しました。 可能であれば、CSVファイルを作り直してもらった方がいいような気がします。
- _kappe_
- ベストアンサー率68% (1581/2304)
既に回答がついている通り、そのCSVファイルの仕様が分からないと方針を決められません。 たとえばデータの中に改行を含む場合にダブルクォーテーションで囲むような形式になっている場合は、行内のダブルクォーテーションの数を数えて奇数だったら次の行とつなげてから処理するとか。 ↓データ例("FGH改行IJK"が1つのフィールド) ab,cde,"FGH IJK",12345
- AsarKingChang
- ベストアンサー率46% (3467/7474)
1行のパターンと2行のパターンを 補足にでも入れてもらえますか? 何でそうなってるのかが、回答者側から見えない為。
補足
遅くなりまして大変失礼しました。 回答ありがとうございます。また、説明不足で申し訳ございません。 csvファイルの仕様は、25カラムぐらいありまして、それぞれ日付などを管理しています。 その1つのカラムが、ある結果を表示しているので、行によって、長さが違います。非常に長くなるものだと、csvファイルを開くと2行以上になっています。テキストファイルで開くと改行されていないように見えるのですが、、、。 対象のカラムは、,やダブルクォーテーションも仕様しています。 別のところから用意するcsvファイルなのでcsvファイルの仕様を変えることができないため、困っております。 文字数が多くても、一つのカラムと判定捺せられればよいのかと思っておりますが、全く解りません。 説明不足、また分かりづらい書き方で申し訳ございません。