· 1 min read
MySQL DB in UTF8 konvertieren
Ein Wort der Warnung: Wie immer sollte man IMMER ein Backup anlegen bevor man seine Daten in großem Stil verändert —> Ihr seid gewarnt!
Hier nun das Script: Es ruft im Grunde die bekannten Shellscript-Befehle (iconv, mysqldump, etc.) auf um die Konvertierung durchzuführen.
[ruby wraplines=“true”]
class ConvertDbToUtf8
def self.up
db_name = ‘DATENBANK-NAME’ db_user = ‘DATENBAK-BENUTZER’ db_pass = ‘DATENBANK-PASSWORT’ db_host = ‘DATENBANK-HOST’
latin1_mysql_dump = ‘latin1_mysql_dump.sql’ utf8_mysql_dump = ‘utf8_mwsql_dump.sql’
print “DB-Dump holen… ” system “mysqldump —user=#{db_user} —password=’#{db_pass}’ —host=#{db_host} —add-drop-table —default-character-set=latin1 —insert-ignore —skip-set-charset #{db_name} > #{latin1_mysql_dump}” puts “…fertig”
print “Konvertierung nach UTF8 starten… ” system “iconv -f ISO-8859-1 -t UTF-8 #{latin1_mysql_dump} | sed ‘s/latin1/utf8/’ > #{utf8_mysql_dump}” puts “…fertig”
print “Datenbank neu anlegen” system “mysql —user=#{db_user} —password=’#{db_pass}’ —host=#{db_host} —execute=“DROP DATABASE #{db_name};"" system “mysql —user=#{db_user} —password=’#{db_pass}’ —host=#{db_host} —execute=“CREATE DATABASE #{db_name} CHARACTER SET utf8 COLLATE utf8_unicode_ci;"" puts “…fertig”
print “Konvertierten UTF8 Dump einspielen…” system “mysql —user=#{db_user} —password=’#{db_pass}’ —host=#{db_host} —default-character-set=utf8 #{db_name} < #{utf8_mysql_dump}” puts “…fertig”
puts ” Konvertierung abgeschlossen ” end
def self.down raise “Konvertierung fehlgeschlagen” end
end
[/ruby]