刚开始学习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发布于 2012-05-17 13:28:30
在您的代码示例中,假设价格字段位于row元素4中:
CSV.foreach("lib/assets/cbmb_sale.csv", :headers => true) do |row|
row[price=4].gsub!(/,/,'')
Property.create!(row.to_hash)
endprice=4只是一种记录价格元素索引值的便捷方法,它创建了一个名为price的变量,将值4赋给它,然后立即将其用作数组索引。
从Property.create开始!已经负责字符串到整数的转换,我们可以对包含空字符串''的逗号/,/的正则表达式执行就地替换。
发布于 2012-05-17 12:49:31
尝试如下所示:
csvvalue = csvvalue.gsub!(/,/,'').to_i干杯!
感谢您发布您的代码。我没有做大量的csv到hashes的转换,但是像下面这样的东西可能会起作用:
Property.create!(row.to_hash.each_pair{|k,v| row.store(k,v.gsub(/,/,'').to_i)})很难看,但可能很接近你想要的。
发布于 2012-05-17 14:02:16
尝试:
"220,000".scan(/\d+/).join().to_ihttps://stackoverflow.com/questions/10629958
复制相似问题