Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- old_table_name = 'internalfirst_message_meta_data_old'
- table_name = 'internalfirst_message_meta_data'
- id = 169100000;
- def process(id, old_table_name, table_name)
- t = Mysql2::Client.new(:host=>"10.85.162.164", :database=>"warehouse_b2b_production", :username=>"wh-2_rw", :password=>"NYvSzh70")
- all_msgs = t.query("select * from #{old_table_name} where id > #{id}")
- all_msgs.each do |msg|
- msg['created_at'] = msg['created_at'].strftime("%Y-%m-%d %H:%M:%S")
- msg['updated_at'] = msg['updated_at'].strftime("%Y-%m-%d %H:%M:%S")
- end
- puts all_msgs.size
- all_msgs.each_slice(1000) do |msgs|
- sql = prepare_insert_sql(table_name, msgs)
- # puts sql
- # puts insert_query
- t.query(sql)
- puts 'Successfully inserted ###'
- end
- end
- def prepare_insert_sql(table_name, inserts)
- input = {:table_name => table_name, :inserts => inserts}
- validate_insert_sql_construction(input)
- sql = ''
- sql << 'INSERT INTO '
- sql << "#{table_name}"
- column_sql = []
- # Note: Query is constructed based on keys of first
- columns = inserts.first.keys
- columns.each { |column_name| column_sql << "`#{column_name.to_s}`" }
- sql << "(#{column_sql.join(',')}) "
- sql << 'VALUES '
- inserts.each_with_index do |row, index|
- insert_values = []
- columns.each do |column|
- insert_values << if row[column].is_a?(String)
- "'" + row[column].to_s + "'" #need to see about escaping the string here first
- elsif row[column].is_a?(NilClass)
- 'NULL'
- else
- row[column]
- end
- end
- sql << "(#{insert_values.join(',')})"
- sql << ', ' unless (index + 1 == inserts.size)
- end
- sql
- end
- def validate_insert_sql_construction(input)
- validate_presence_of :table_name, :inserts, :in => input, :allow_blank => false, :clause => :insert
- end
- def validate_presence_of(*args)
- if (options = args[-1]).instance_of? Hash
- map = options[:in] || {}
- blank_check = options[:allow_blank] == false ? true : false
- key_list = args[0..-2]
- clause = options[:clause]
- else
- map, key_list = {}, []
- end
- key_list.each do |key|
- unless map.has_key?(key)
- raise "'#{key}' parameter is mandatory in '#{clause}' clause"
- end
- if (blank_check && (!is_not_empty?(map[key])))
- raise "'#{key}' parameter can't be blank in '#{clause}' clause"
- end
- end
- end
- def is_not_empty?(value)
- all_values_present =
- if value.is_a?(Array)
- value.all? do |v|
- v.present?
- end
- else
- value.present?
- end
- value.present? and all_values_present
- end
- process(id, old_table_name, table_name)
Add Comment
Please, Sign In to add comment