Как добавить дату CSV в базу данных
У меня есть файл со следующим содержанием:
purchaser name item description item price purchase count merchant address merchant name
João Silva R$10 off R$20 of food 10.0 2 987 Fake St Bob's Pizza
Amy Pond R$30 of awesome for R$10 10.0 5 456 Unreal Rd Tom's Awesome Shop
Marty McFly R$20 Sneakers for R$5 5.0 1 123 Fake St Sneaker Store Emporium
Snake Plissken R$20 Sneakers for R$5 5.0 4 123 Fake St Sneaker Store Emporium
Я создал базу данных следующим образом:
У меня есть следующий код для получения данных:
require 'csv'
CSV.foreach('myfile.txt', col_sep: "\t", headers: true).map do |row|
row.to_h
end
Я получаю следующий хэш, когда сжимаю его:
[{"purchaser name"=>"João Silva", "item description"=>"R$10 off R$20 of food", "item price"=>"10.0", "purchase count"=>"2", "merchant address"=>"987 Fake St", "merchant name"=>"Bob's Pizza"}, {"purchaser name"=>"Amy Pond", "item description"=>"R$30 of awesome for R$10", "item price"=>"10.0", "purchase count"=>"5", "merchant address"=>"456 Unreal Rd", "merchant name"=>"Tom's Awesome Shop"}, {"purchaser name"=>"Marty McFly", "item description"=>"R$20 Sneakers for R$5", "item price"=>"5.0", "purchase count"=>"1", "merchant address"=>"123 Fake St", "merchant name"=>"Sneaker Store Emporium"}, {"purchaser name"=>"Snake Plissken", "item description"=>"R$20 Sneakers for R$5", "item price"=>"5.0", "purchase count"=>"4", "merchant address"=>"123 Fake St", "merchant name"=>"Sneaker Store Emporium"}]
Как поместить каждый элемент этого хэша в соответствующую таблицу в базе данных?
1 ответ
Решение
CSV.foreach('myfile.txt', col_sep: "\t", headers: true).map do |row|
records = row.to_h
# you can set the records as variables:
purchaser = records["purchaser name"]
item_description = records["item description"]
item_price = records["item price"]
purchase_count = records["purchase count"]
merchant_address = records["merchant_address"]
merchant_name = records["merchant name"]
# now that you have the content as variables do you can whatever you want with them
# Merchant.where(name: merchant_name), etc...
end