#!/usr/bin/env ruby # 1283314500 EXPORTS NET-A-PORTER LIVE DATA INTO POSTGRESQL require "logger" require "sequel" #require "pgpass" require "fileutils" module NAP LOGGERS = [Logger.new($stdout)] # PG = Sequel.connect(Pgpass.match(database: "productactivity").to_url) PG = Sequel.connect('postgres://user:password@host:port/database_name') require_relative "nap_model" Activity.create_table? module_function def log lambda{|*msg| LOGGERS.each{|logger| logger.__send__(*msg) }} end def import sources = Dir.glob("[0-9]*.sqlite").sort # Don't import the latest one, it might still be incomplete. # sources.pop sources.each do |source| Sequel.connect "sqlite://#{source}" do |db| log.(:info, "Importing #{db.uri} into #{PG.uri}") db[:activities].each do |row| next if PG[:activities][id: row[:id]] activity = Activity.new_using_server(PG) row.each do |key, value| activity[key] = value end activity.save end end FileUtils.mv source, "#{source}.done" end log.(:info, "#{Activity.count} activities in PostgreSQL") end end NAP.import