0

ruby 新手这是我使用 FasterCSV Gem 的第一个项目,并且非常喜欢它的速度。

我发现了一个问题,当一个字段太长时,它会在下面抛出一个错误:

/Library/Ruby/Gems/1.8/gems/fastercsv-1.5.4/lib/faster_csv.rb:1641:in `shift': FasterCSV::MalformedCSVError (FasterCSV::MalformedCSVError)

错误在第二行第一行被正确读取:-)

"1013197145","PSION HU6020 手带","1","1","10"

"1013197542","HP ProBook NA920EA_KT931AT 39.6 cm (15.6") 笔记本电脑 - Intel Core 2 Duo T6570 2.10 GHz - 1366 x 768 WXGA 显示器 - 2 GB RAM - 250 GB HDD - DVD-Writer LightScribe - Intel GMA 4500MHD 显卡 - 蓝牙- 网络摄像头 - 正版 Windows Vista Business - 5 小时电池 - HDMI","1","1","10"

这是我的代码:

FasterCSV.foreach(file_path, {:col_sep=> colsep, :quote_char => char}) do |row|

   my.query("INSERT INTO product_prices (partno,costpriceexvat,sku, supplierid) VALUES ('#{row[7]}', '#{row[8]}', '#{row[3]}','1')")

end

任何帮助将非常感激。

4

1 回答 1

1

我怀疑这与 FasterCSV 在长字符串上窒息以及物品描述的“(15.6”)部分中带有英寸字符的所有内容无关 - 因为它与引号相同,它终止了 CSV 值,从而使对于格式错误的 CSV 行。FasterCSV旨在严格处理此类事情。

于 2011-10-22T11:56:06.363 回答