В настоящее время у меня есть файл csv, который заполняет таблицу. Я wanitng от графика, так что он работает ежедневно. Однако вместо того, чтобы стереть таблицу, возможно ли ее получить, чтобы она только добавила то, что еще не существует?Таблица данных базы данных csv
Допустим, у меня есть этот макет в настоящий момент.
Title|Name|Date|Url|
1 |2 |3 |4 |
Тогда мой CSV имеет это в нем
Title|Name|Date|Url|
1 |2 |3 |4 |
1 |2 |3 |7 |
Можно ли игнорировать первую строку CSV и добавить вторую в поле столбца URL отличается?
Вот что я до сих пор
require 'open-uri'
require 'csv'
namespace :event do
task reload: :environment do
ActiveRecord::Base.connection.execute("TRUNCATE events RESTART IDENTITY")
gzipped = open('URL LINK HERE')
csv_text = Zlib::GzipReader.new(gzipped).read
csv = CSV.parse(csv_text, :headers=>true)
csv.each do |row|
Event.create(time: row[9], date: row[10], URL: row[8], eventname: row[7])
end
end
end
Я знаю, что, очевидно, я буду смотреть на устранение этой лжи и chanign его обновление какой-то?
ActiveRecord::Base.connection.execute("TRUNCATE events RESTART IDENTITY")
Также я использую рельсы, если это вообще помогает?
вы должны отслеживать, где вы остановились в файле CSV. например сохраните местоположение смещения байта/файла, затем 'seek()' там каждый раз. –
CSV постоянно перемещается, его нужно будет проверять каждый раз. Единственное, что остается прежним, - это заголовки, а URL-адреса - это уникальные вещи. – SamAdmit
, то, вероятно, самая простая задача - загрузить весь csv в временную таблицу, а затем объединить эту временную таблицу с «реальной» таблицей, чтобы добавить новые записи. –