Guest User

Untitled

a guest
Sep 21st, 2017
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.73 KB | None | 0 0
  1. old_table_name = 'internalfirst_message_meta_data_old'
  2. table_name = 'internalfirst_message_meta_data'
  3.  
  4. id = 169100000;
  5.  
  6. def process(id, old_table_name, table_name)
  7. t = Mysql2::Client.new(:host=>"10.85.162.164", :database=>"warehouse_b2b_production", :username=>"wh-2_rw", :password=>"NYvSzh70")
  8. all_msgs = t.query("select * from #{old_table_name} where id > #{id}")
  9.  
  10. all_msgs.each do |msg|
  11. msg['created_at'] = msg['created_at'].strftime("%Y-%m-%d %H:%M:%S")
  12. msg['updated_at'] = msg['updated_at'].strftime("%Y-%m-%d %H:%M:%S")
  13. end
  14.  
  15. puts all_msgs.size
  16.  
  17. all_msgs.each_slice(1000) do |msgs|
  18. sql = prepare_insert_sql(table_name, msgs)
  19. # puts sql
  20. # puts insert_query
  21. t.query(sql)
  22. puts 'Successfully inserted ###'
  23. end
  24. end
  25.  
  26.  
  27.  
  28. def prepare_insert_sql(table_name, inserts)
  29. input = {:table_name => table_name, :inserts => inserts}
  30. validate_insert_sql_construction(input)
  31. sql = ''
  32. sql << 'INSERT INTO '
  33. sql << "#{table_name}"
  34. column_sql = []
  35. # Note: Query is constructed based on keys of first
  36. columns = inserts.first.keys
  37. columns.each { |column_name| column_sql << "`#{column_name.to_s}`" }
  38. sql << "(#{column_sql.join(',')}) "
  39. sql << 'VALUES '
  40. inserts.each_with_index do |row, index|
  41. insert_values = []
  42. columns.each do |column|
  43. insert_values << if row[column].is_a?(String)
  44. "'" + row[column].to_s + "'" #need to see about escaping the string here first
  45. elsif row[column].is_a?(NilClass)
  46. 'NULL'
  47. else
  48. row[column]
  49. end
  50. end
  51. sql << "(#{insert_values.join(',')})"
  52. sql << ', ' unless (index + 1 == inserts.size)
  53. end
  54. sql
  55. end
  56.  
  57. def validate_insert_sql_construction(input)
  58. validate_presence_of :table_name, :inserts, :in => input, :allow_blank => false, :clause => :insert
  59. end
  60.  
  61. def validate_presence_of(*args)
  62. if (options = args[-1]).instance_of? Hash
  63. map = options[:in] || {}
  64. blank_check = options[:allow_blank] == false ? true : false
  65. key_list = args[0..-2]
  66. clause = options[:clause]
  67. else
  68. map, key_list = {}, []
  69. end
  70.  
  71. key_list.each do |key|
  72. unless map.has_key?(key)
  73. raise "'#{key}' parameter is mandatory in '#{clause}' clause"
  74. end
  75. if (blank_check && (!is_not_empty?(map[key])))
  76. raise "'#{key}' parameter can't be blank in '#{clause}' clause"
  77. end
  78. end
  79. end
  80.  
  81. def is_not_empty?(value)
  82. all_values_present =
  83. if value.is_a?(Array)
  84. value.all? do |v|
  85. v.present?
  86. end
  87. else
  88. value.present?
  89. end
  90. value.present? and all_values_present
  91. end
  92.  
  93.  
  94. process(id, old_table_name, table_name)
Add Comment
Please, Sign In to add comment