1

刚开始学习 Rails 并设法将 csv 文件导入数据库,但 csv 中的价格字段有引号和逗号,如下所示:“560,000”

但是如果我在迁移文件中将价格字段设置为 t.integer,然后添加数据,价格将导入为 560。那么,如何在导入之前删除引号和逗号?谢谢,亚当

编辑:这是 rake 文件:

require 'csv'    

task :csv_to_properties => [:environment] do 
  CSV.foreach("lib/assets/cbmb_sale.csv", :headers => true) do |row|

    Property.create!(row.to_hash)
  end
end
4

3 回答 3

2

尝试类似:

csvvalue = csvvalue.gsub!(/,/,'').to_i

干杯!

感谢您发布您的代码。我不会做很多将 csv 转换为哈希的事情,但这样的事情可能会起作用:

Property.create!(row.to_hash.each_pair{|k,v| row.store(k,v.gsub(/,/,'').to_i)})

非常丑陋,但可能非常接近你想要的。

于 2012-05-17T04:49:30.747 回答
1

在您的代码示例中,假设价格字段位于row元素 4 中:

CSV.foreach("lib/assets/cbmb_sale.csv", :headers => true) do |row|
  row[price=4].gsub!(/,/,'')
  Property.create!(row.to_hash)
end

price=4只是记录 price 元素的索引值的一种方便方法,它创建一个名为 price 的变量,将值 4 分配给它,然后立即将其用作数组索引。

由于 Property.create! /,/已经处理了字符串到整数的转换,我们可以对包含空字符串逗号的正则表达式执行就地替换''

于 2012-05-17T05:28:29.933 回答
0

尝试:

"220,000".scan(/\d+/).join().to_i
于 2012-05-17T06:02:16.033 回答