【问题标题】:Ruby csv import troubleRuby csv导入麻烦
【发布时间】:2012-08-23 06:11:12
【问题描述】:

我尝试在我的 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+

【问题讨论】:

  • 复制数据并创建另一个 csv 并粘贴此数据并再次检查。CSV 可能已损坏

标签: ruby-on-rails ruby csv fastercsv


【解决方案1】:

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

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

【讨论】:

  • 哦,是的。我今天还没有喝到第八杯咖啡。
猜你喜欢
  • 2020-12-23
  • 1970-01-01
  • 2017-04-10
  • 2014-05-23
  • 2014-06-28
  • 2018-10-29
  • 1970-01-01
  • 2019-09-17
  • 2023-02-05
相关资源
最近更新 更多