【发布时间】:2014-07-26 00:33:18
【问题描述】:
我需要将一个大的 csv 文件导入到 Rails 项目中。我正在使用: 红宝石 2.1.2p95 导轨 4.1.1 mysql 版本 14.14
我正在尝试将其作为一项 rake 任务来执行,首先在独立表中创建记录,获取这些记录的记录 ID,然后将这些用于外键以填充相关表中的记录。
我正在尝试只创建独立记录,并打印出这些外国 id,首先对一个小测试文件进行操作。
但是,我收到了这个我不明白的文件结尾:
rake aborted! SyntaxError: /Users/rickcasey/Projects/Programming/WikiFrac/wfrails/lib/tasks/import_partial.rake:94:语法错误,意外的keyword_end,预期输入结束
这就是我的 rake 脚本的样子:
#lib/tasks/import_partial.rake
require 'csv'
# Independent tables:
# Companies
# Counties
# Fields
# Formations
# Gastypes
# Wells
#
# Dependendecies and foreign key field used to find correct record id:
# Facilities.company_id -> Companies.company_name
# Facilities.field_id -> Fields.field_name
# Facilities.county_id -> Counties.county_name
# Wells.gastype_id -> GasTypes.gas_type
task :import_partial => :environment do
csv.foreach('public/partial.csv', :headers => true) do |row|
# create records in independent tables
# create the Company object
this_company_name = row.to_hash.slice(*%w[county_name])
if !(Company.exists?(company_name: this_company_name))
Companies.create(row.to_hash.slice(*%w[company_name operator_num]))
end
thecompany = Company.find(this_company_name)
company_id = thecompany.id
# create the County object
this_county_name = row.to_hash.slice(*%w[county])
if !(County.exists?(county_name: this_county_name))
Counties.create(county_name: this_county_name)
end
thecounty = County.find(this_county_name)
county_id = thecounty.id
# create the GasType object
this_gastype_name = row.to_hash.slice(*%w[gas_type])
if !(GasType.exists?(gastype_name: this_gastype_name))
GasType.create(gastype_name: this_gastype_name)
end
thegastype = GasType.find(this_gastype_name)
gastype_id = thegastype.id
# create the Field object
this_field_name = row.to_hash.slice(*%w[field])
if !(Field.exists?(field_name: this_field_name))
Field.create(field_name: this_field_name, field_code: field_code)
end
thefield = Field.find(this_field_name)
field_id = thefield.id
# create the Formations object
this_formation_name = row.to_hash.slice(*%w[formation])
if !(Formation.exists?(formation_name: this_formation_name))
Counties.create(formation: this_formation_name, formation_code: formation_code)
end
theformation = Formation.find(this_formation_name)
formation_id = theformation.id
# debugging:
puts "company_id:", company_id
puts "county_id:", county_id
puts "gastype_id:", gastype_id
puts "field_id:", field_id
# create records in dependent tables:
# Use the record id's from above independent table create records containing foreign keys:
#Facilities.create(row.to_hash.slice(*%w[dir_e_w dir_n_s dist_e_w dist_n_s facility_name facility_num ground_elev lat long meridian qtrqtr range sec twp utm_x utm_y])
#Wells.create(row.to_hash.slice(*%w[api_county_code api_seq_num first_prod_date form_status_date formation_status sidetrack_num spud_date status_date td_date test_date wbmeasdepth wbtvd well_bore_status well_name])
end
end
end
任何建议都非常感谢...
【问题讨论】: