class MysqlClient
Public Class Methods
new(*args)
click to toggle source
# File lib/sqlite2mysql/services/mysql.rb, line 4 def initialize(*args) @client = Mysql2::Client.new(*args) end
Public Instance Methods
build_from_schema(schema)
click to toggle source
# File lib/sqlite2mysql/services/mysql.rb, line 14 def build_from_schema(schema) schema.keys.each do |table| puts "Creating table: #{table}" create_table(table, schema[table]) end end
create_table(table, fields)
click to toggle source
# File lib/sqlite2mysql/services/mysql.rb, line 21 def create_table(table, fields) puts create_table_query(table, fields) @client.query(create_table_query(table, fields)) end
insert_table(table, data)
click to toggle source
# File lib/sqlite2mysql/services/mysql.rb, line 26 def insert_table(table, data) data.each_slice(1000) do |slice| @client.query(chunk_sql(table, slice)) print '.' end end
recreate(name)
click to toggle source
# File lib/sqlite2mysql/services/mysql.rb, line 8 def recreate(name) @client.query("DROP DATABASE IF EXISTS #{name}") @client.query("CREATE DATABASE #{name}") @client.query("USE #{name}") end
Private Instance Methods
chunk_sql(table, chunk)
click to toggle source
# File lib/sqlite2mysql/services/mysql.rb, line 35 def chunk_sql(table, chunk) values = [] chunk.each do |row| values << "#{row_sql(row)}" end "INSERT INTO #{table} VALUES #{values.join(', ')}" end
create_table_query(table, fields)
click to toggle source
# File lib/sqlite2mysql/services/mysql.rb, line 54 def create_table_query(table, fields) reserved_words = %w(key int) query = "CREATE TABLE #{table} (" cols = [] fields.each do |col| col[:name] += '_1' if reserved_words.include?(col[:name]) cols << "#{col[:name]} #{col[:type]} #{'NOT NULL' if col[:notnull]}" end query + "#{cols.join(', ')})" end
row_sql(row)
click to toggle source
# File lib/sqlite2mysql/services/mysql.rb, line 43 def row_sql(row) values = row.map do |val| if val.is_a?(String) (val.empty? || val.nil? || val == '') ? nil : @client.escape(val) else val end end "(\"#{values.join('", "')}\")" end