Ruby csv导入麻烦

时间:2012-08-28 17:17:23

标签: ruby-on-rails ruby csv fastercsv

我尝试在我的rails应用程序中从csv导入数据,但出了点问题:

CSV::MalformedCSVError in ArticlesController#index
Unclosed quoted field on line 1.

我的csv看起来像这样:

"Код";"№ по каталогу  (артикул)";"Наименование  товара";"Ед. изм.";"Цена опт.";"Доп.";"Остатки";"Класс";"Группа";"Бренд";"Блок."
2223;15-562-44;15-562-44 (27-B07-F) VW Polo 95-R                                                                   ;шт  ;37,430;;;Амортизаторы                                                                                        ;Амортизаторы BOGE                                                                                   ;; 
10327;24-052-1;24-052-1(46-A27-0) LAND ROVER 84- F                                                                 ;шт  ;68,750;;;Амортизаторы                                                                                        ;Амортизаторы BOGE                                                                                   ;; 
10328;24-053-1;24-053-1(46-A28-0) LAND ROVER 84- R                                                                 ;шт  ;68,750;;;Амортизаторы                                                                                        ;Амортизаторы BOGE                                                                                   ;; 

也许这是因为第一行(没有;;)

我的代码如下:

def csv_import 
    require 'csv'
    file = File.open("/#{Rails.public_path}/uploads/smallcsv.csv")
    #csv = CSV.parse(file)


    csv = CSV.open(file, "r:ISO-8859-15:UTF-8", {:col_sep => ";", :row_sep => ";;", :headers => :first_row})
    file_path = "/#{Rails.public_path}/uploads/smallcsv.csv"
    #@parsed_file=CSV::Reader.parse(file_path)

    csv.each do |row| 
      ename = row[2]
      eprice = row[5]
      eqnt = row[7]
      esupp = row[10]

      logger.warn(ename)
    end

  end

我使用fastercsv gem运行ruby 1.9+

1 个答案:

答案 0 :(得分:1)

我自己使用“CSV - Unquoted fields do not allow \r or \n (line 2)”来解决这个问题。

问题在于第一行,所以:auto帮助了我。