DATABASE = 'mask' CHARACTER_SET = 'utf8mb4' COLLATION = 'utf8mb4_bin' schema = File.open('db/schema.rb', 'r').read rows = schema.split("\n") clean_rows = [] rows.each do |ro| clean_rows << ro.split(",") end table_name = nil clean_rows.flatten.each do |row| if row =~ /create_table/ table_name = row.match(/create_table "(.+)"/)[1] puts "ALTER TABLE `#{DATABASE}`.`#{table_name}` DEFAULT CHARACTER SET #{CHARACTER_SET} COLLATE #{COLLATION};" elsif row =~ /t\.string/ field_name = row.match(/"(.+)"/)[1] puts "ALTER TABLE `#{DATABASE}`.`#{table_name}` CHANGE COLUMN `#{field_name}` `#{field_name}` CHARACTER SET #{CHARACTER_SET} COLLATE #{COLLATION};" elsif row =~ /t\.text/ field_name = row.match(/"(.+)"/)[1] puts "ALTER TABLE `#{DATABASE}`.`#{table_name}` CHANGE COLUMN `#{field_name}` `#{field_name}` CHARACTER SET #{CHARACTER_SET} COLLATE #{COLLATION};" end end