Skip to content

Instantly share code, notes, and snippets.

@mangantj
Last active December 12, 2015 12:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mangantj/4772489 to your computer and use it in GitHub Desktop.
Save mangantj/4772489 to your computer and use it in GitHub Desktop.
require 'csv'
f = File.open("churches.csv", "r")
csv_string = ""
import_string = CSV.generate do |csv|
CSV.foreach(f, :encoding => 'windows-1251:utf-8') do |row|
if row[1] && row[1].length == 8
if row[5]
address = row[5].gsub(/(?<!^|,)"(?!,|$)/, '')
end
csv_string += "p 'Church ID: #{row[1]}'\n"
if row[8] =~ /^\s*\d+\s*$/
csv_string += "address = Address.create( address_1: \"#{address}\", city: \"#{row[6]}\", state: \"#{row[7]}\", zip: \"#{row[8]}\", country: \"#{row[9]}\")\n"
else
csv_string += "address = Address.create( address_1: \"#{row[5]}\", city: \"#{row[6]}\", state: \"#{row[7]}\", country: \"#{row[9]}\")\n"
end
if row[10]
number = row[10].split("-")
if number[0] && number[1] && number[2]
if number[0].length == 3 && number[1].length == 3 && number[2].length == 4
csv_string += "phone_number = PhoneNumber.create( area_code: \"#{number[0]}\", prefix: \"#{number[1]}\", subscriber: \"#{number[2]}\")\n"
end
end
end
prd_legacy_id = row[1][0..5]
csv_string += "prd = PresidingElderDistrict.find_by_legacy_id(\"#{prd_legacy_id}\")\n"
csv_string += "church = Church.create( legacy_id: \"#{row[1]}\", name: \"#{row[3]}\" , address_id: address.id, presiding_elder_district_id: prd.id)\n"
if !row[4].nil?
csv_string += "church.create_e_mail_address( address: \"#{row[4]}\")\n\n"
else
csv_string += "\n"
end
end
end
end
File.open("import.csv", 'w'){ |file| file.write(csv_string)}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment