【发布时间】:2017-04-05 18:13:59
【问题描述】:
我正在为用户创建日记以跟踪他的日常支出。但是,我已经有 csv 文件,其中包含要导入到支出表中的 1751 条记录。我正在通过 rake 任务执行此操作。
导入工作正常。当我在开发(SQLite)中这样做并希望通过创建操作创建新记录时,新记录的 ID 为 1752(这是正确的)。
如果我在生产环境(Heroku/PostgreSQL)中这样做,Postgres 会尝试创建 ID 为 1 的新记录,这显然会导致错误(因为前 1751 个 ID 已被占用)。
我的问题:我该如何解决这个问题,以便 Postgres ID 序列以 ID 1752 而不是 ID 1 开头(就像开发中的 SQLite)?
import_expenditure.rake
require 'csv'
namespace :csv do
desc "Import CSV Data from Expenditures data"
task :import_expenditures => :environment do
Expenditure.delete_all
csv_file_path = 'db/exp_data.csv'
CSV.foreach(csv_file_path) do |row|
Expenditure.create!({
:id => row[0],
:day => row[1],
:value => row[2],
:description => row[3],
:cost_type => row[4],
:category_id => row[5],
:user_id => row[6]
})
puts "Row added!"
end
end
end
【问题讨论】:
标签: ruby-on-rails postgresql csv import