Guest User

Untitled

a guest
Oct 4th, 2018
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. require 'sequel'
  2.  
  3. logger = ::Logger.new('tanga.log')
  4.  
  5. oracle_db = Sequel.oracle "//192.168.0.7:1521/xe", user: 'system', password: 'oracle'
  6. pg_db = Sequel.postgres 'mawidabp_development',
  7. user: 'docker',
  8. password: 'docker',
  9. host: 'localhost',
  10. port: 5432
  11.  
  12. Rails.application.eager_load!
  13. models = (ApplicationRecord.descendants + [PaperTrail::Version]).flatten.uniq { |m| m.table_name }
  14.  
  15. 5.times do |i|
  16. same = []
  17. models.each do |model|
  18. table_name = model.table_name.to_sym
  19. next if i.zero? && [:versions].include?(table_name)
  20.  
  21. logger.info '='*60
  22. logger.info "Migrating #{table_name}"
  23.  
  24. # sqlite_table = sqlite_db[table_name]
  25. pg_table = if table_name == :co_weakness_template_relations
  26. pg_db[:control_objective_weakness_template_relations]
  27. else
  28. pg_db[table_name]
  29. end
  30.  
  31. oracle_table = if table_name == :control_objective_weakness_template_relations
  32. model.table_name = :co_weakness_template_relations
  33. oracle_db[:co_weakness_template_relations]
  34. else
  35. oracle_db[table_name]
  36. end
  37.  
  38.  
  39. columns = model.columns.map(&:name).map(&:to_sym)
  40.  
  41. pg_table.each do |row|
  42. begin
  43. a = row.slice(*columns).each_with_object({}) do |(k,v), memo|
  44. memo[k] = v unless v.blank? && k.to_s.match?(/_id$/)
  45. memo[k] = v.truncate(2000) if v.present? && v.to_s.size > 2000
  46. end
  47.  
  48. # ActiveRecord::Base.connection.execute pg_table.insert_sql(a)
  49. oracle_table.insert(a)
  50. rescue => e
  51. unless e.to_s.match?(/(ORA-02291|ORA-00001)/)
  52. logger.info "Error: #{e.to_s}"
  53. byebug
  54. end
  55. end
  56. end
  57.  
  58. logger.info "#{table_name} old count: #{pg_table.count} new count: #{oracle_table.count}"
  59. same << [pg_table.count == oracle_table.count]
  60. end
  61.  
  62. break if same.all?
  63.  
  64. logger.info "Retrying everthing again..."
  65. end
Add Comment
Please, Sign In to add comment