我正在尝试在 rails 3 中创建一个新的 rake 任务。
我有两个 csv 文件(gas.csv 和 elec.csv),其中包含每十五分钟从 SQL 数据库更新的使用数据。csv的格式如下(我无法控制):
MeterID,RoundedTimeStamp,Value,Register
165,31/01/2012 00:00,1200,0
165,28/02/2012 00:15,1201,0
165,31/03/2012 00:30,1199,0
csv 每月更新一次新值,我想编写一个 rake 导入任务来将文件导入模型的相关部分,Usage(month, elec, gas)。到目前为止,我已经为 elec 导入提供了以下内容,但这并没有真正起作用:
require 'csv'
desc "Importing Usage data from CSV file"
task import: :environment do
file = ".../elec.csv"
CSV.foreach(file, headers: true) do |row|
Usage.find_or_create_by_month({
month: row[1],
elec: row[2]
})
end
end
当我从控制台运行 rake:import 时,它会很好地导入 elec 使用数据,但不会跳过重复项。有没有一种方法可以导入这个文件而不重复,还有一种方法可以对气体数据做同样的事情?
注意:我知道使用 first_or_create 而不是 find_or_create 更好,但这不适用于 _by_month。
干杯!