質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

1回答

332閲覧

繰り返し処理を実行時に、件数が何万件にも増えたらエラーが出た

kozica

総合スコア58

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2018/12/14 08:39

編集2018/12/14 08:40

件数が少ないときはエラーなく実行できていましたが、
何万件もの量のデータで繰り返し処理を実行したとき下記エラーが出ました。
エラーみるとCSVでエラーになっているようです。
クローズされていないみたいな内容なのですが、
table.close
が終わりに必要ということなのでしょうか?

ruby

1().each do |f| 2. 3. 4. 5#下記283行目 6table = CSV.read("data/#{uid}/#{year}/#{month}/authlog_start", encoding:"ISO-8859-1:utf-8",headers: false) 7 8/usr/share/ruby/2.0/csv.rb:1869:in `block in shift': Unclosed quoted field on line 7514. (CSV::MalformedCSVError) 9 from /usr/share/ruby/2.0/csv.rb:1776:in `loop' 10 from /usr/share/ruby/2.0/csv.rb:1776:in `shift' 11 from /usr/share/ruby/2.0/csv.rb:1718:in `each' 12 from /usr/share/ruby/2.0/csv.rb:1732:in `to_a' 13 from /usr/share/ruby/2.0/csv.rb:1732:in `read' 14 from /usr/share/ruby/2.0/csv.rb:1323:in `block in read' 15 from /usr/share/ruby/2.0/csv.rb:1266:in `open' 16 from /usr/share/ruby/2.0/csv.rb:1323:in `read' 17 from exec.rb:283:in `block (2 levels) in <main>' 18 from exec.rb:267:in `each' 19 from exec.rb:267:in `block in <main>' 20

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

set0gut1

2018/12/14 08:43

csvファイル7514行目にダブルクオートかなにかの囲い文字が含まれてる感じのエラーメッセージですね。7514行目付近を適度に伏せ字にして貼っていただけるとよいかと思います。
kozica

2018/12/14 08:48

おっしゃるとおりでした!!! ダブルクオートに気づきませんでした、、、 本当に助かりました。 本当にありがとうございます!1
set0gut1

2018/12/14 08:52

おおっと。アンサーします。
guest

回答1

0

csvファイル7514行目にダブルクオートかなにかの囲い文字が含まれてる感じのエラーメッセージです。

なおcsvで値にダブルクオート"をエスケープするには、2つ続けて""と書く…みたいな仕様があったりします。
csvファイル自体の問題なので、読み込み側ではなくcsvファイル生成側のコードを修正する感じになりそうです。
ファイルのフォーマットってかなり細かいルールがあって自力でやると高確率でバグを埋めるので、読み書きは既存のライブラリを使うと良いです。

投稿2018/12/14 08:57

set0gut1

総合スコア2413

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問