2011-06-21 8 views
0

SQLダンプの内容を解析し、タブ(\ t)区切りのTXTの形式になっていると「引用符が正しくありません」というエラーが表示されます。RubyでFasterCSVを使用している行の引用符が正しくありません。1.8.7

require 'rubygems' 
    require 'faster_csv' 
    begin 
    FasterCSV.foreach(excel_file, :quote_char => '"',:col_sep =>'\t', :row_sep =>:auto, :headers => :first_row) do |row| 

    col= row.to_s.split(/\t/) 

    if col[3]!="" or !col[3].empty? 
    color_value=col[3].to_s.capitalize 
    #Inser Color 
    color=Color.find_or_create_by_name(:name=>color_value) 
    elsif col[3].empty? 
    color_id= nil 
    end 

    end 
    rescue Exception => e 
    puts e 
    end 

実行されるプログラムと正常に実行されますが、以下の のような存在に無効なデータがある(@フォントフェースは...)不法行に引用3.

ID Name code comments 
    1 white 234 good 
    2 Black 222 
    3 red 343 @font-face { font-family: "Verdana"; .....} 
」のエラーで終了し、実行を意味します

は、いずれかが無効なデータが列に発生した場合にスキップする方法を私に示唆することはできますか?事前に

感謝。

答えて

0

私は、これは目を解決するかどうかわからないんだけどEのあなたが見ているエラーが、あなたは二重引用符を使用する必要が周り例えば、文字をエスケープ:

:col_sep => "\t" 
+0

WAITEのおかげでまだ私は同じ問題「不正な引用行3を」直面しています私はkの可能性があります。今、無効なデータが含まれている行をスキップする方法は? – prabu

0

FasterCSVがひどくデータをフォーマットされたことは非常に親切ではありません。 解決策があるかどうかわかりません。しかし

- あなたの例のファイルは、実際に「 を使用して、任意の引用が含まれていない場合は、おそらく違うだけquot_char(例えば「)を使用

+0

ありがとう!私は単一引用符char( ')で試してみました。しかし、私の問題は、ここで私はCSSコードがいくつかの無効なデータを含むデータシートを処理する方法です。これをスキップしてプログラムの実行を続ける方法を知ってもいいですか? – prabu

+0

あなたはその例外から救助をすることができますか?私はこれを試していない。 –

0

あなたはNULL文字のASCIIコードを使用することができます - \0x00 - 以下のような:

FasterCSV.foreach(excel_file, :quote_char => '\0x00',:col_sep =>'\t', :row_sep =>:auto, :headers => :first_row) do |row| 
... 
end 

あなたはここにいくつかのASCII文字のチャートを見つけることができます!http://www.bluesock.org/~willg/dev/ascii.html

関連する問題