PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL Server - Sonderzeichen sind Hieroglyphen nach Export/Import


Blase
2014-12-29, 09:12:54
Moin,

Ich habe hier einen MySQL Server (MySQL Workbench 5.2) am Start, auf welchem eine ERP Software läuft. Bedingt durch einen gezwungenermaßen vollzogenen Export und Import auf MySQL Ebene einer früheren MySQL Version, sind in der dazugehörigen Datenbank alle Umlaute (äüöß) nun Hieroglyphen. Ich habe mir zumindest sagen lassen, dass man nun in der "aktuellen" 5.2er Version wiederum ebenfalls einen Export und anschließenden Import der Datenbank machen kann, und dabei der missratene Zeichensatz wieder "korrigiert" wird. Ich habe das auch einmal gemacht, nur ändert das am Zeichensatz nichts. Gibt es hier Export/Import Funktionen, die zu beachten sind? Ideen? Ich bin leider im Bereich MySQL nicht gut - brauche Hilfe! Danke!

MfG Blase

Gast
2014-12-29, 10:43:56
MySQL wandelt selber Zeichensätze um, du musst nur
1. Darauf achten, dass die verwendeten Zeichen vom Charset deiner Tabelle auch abgebildet werden können.
2. Innerhalb deiner MySQL-Verbindung den Zeichensatz angeben, in dem deine Ein- und Ausgabedaten kodiert sind. Das macht man üblicherweise mit "SET NAMES utf8;" etc.

Wenn du deinen Zeichensatz einmal vermurkst hast, kannst du eigentlich nur noch exportieren, den Dump mit tools wie iconv oder recode "reparieren" und dann unter angabe des richtigen Zeichensatzen wieder importieren.

konkretor
2014-12-29, 12:42:16
Was steht den in deiner my.cnf Datei?

Ist dort definiert das UTF8 Standard ist?

Wie Gesagt an die Hilfestellung von Gast halten

auf der mysql cli kannst du dir so schnell einen überblick verschaffen
show variables like 'char%';


http://dev.mysql.com/doc/refman/5.0/en/charset-conversion.html

http://alexking.org/blog/2008/03/06/mysql-latin1-utf8-conversion

Blase
2014-12-29, 21:49:04
Danke euch beiden für die Antworten!

Ich hatte die Möglichkeit, an den ursprünglichen MySQL Server und Datenbank ranzukommen. Hierauf habe ich dann mit der aktuellen Workbench zugegriffen und darüber einen Export durchgeführt. Dieser hatte dann die benötigten UTF8 Zeichensatz im Export bereits drin. Dieser Export ließ sich dann wiederum in das neue System importieren und auf die aktuelle Version hochziehen (ERP). Somit muss ich nicht "basteln" und die paar Sachen, die seit dem ursprünglichen ("falschen") Export durchgeführt worden sind, kann der Kunde einfach nacharbeiten.

Wird Zeit, dass ich in MySQL etwas "fitter" werde - bin zwar auch in MS SQL keine Leuchte, aber damit kann ich schon etwas mehr anstellen :freak:

MfG Blase

EDIT: Wenn du deinen Zeichensatz einmal vermurkst hast, kannst du eigentlich nur noch exportieren, den Dump mit tools wie iconv oder recode "reparieren" und dann unter angabe des richtigen Zeichensatzen wieder importieren. Werde mir die Tools aber dennoch mal ansehen - diese Aktion hat ja meine Neugierde geweckt ;-)

downforze
2014-12-31, 01:37:27
Ich habe damals eine Select Case-Anweisung geschrieben, die dann über eine Update-Anweisung die Daten wieder in die Datenbank gehieft hat.

Gast
2014-12-31, 03:05:12
Wenn du deinen Zeichensatz einmal vermurkst hast, kannst du eigentlich nur noch exportieren, den Dump mit tools wie iconv oder recode "reparieren" und dann unter angabe des richtigen Zeichensatzen wieder importieren.

mysqldump ist da auch schon sehr behilflich. Ich hatte schon die verschiedensten Kodierungsprobleme mit ungepfegten mysql Datenbanken. Da waren doppelt encodierte utf8 Daten in latin1 spalten und umgekehrt. Auch gabs schon beide Varianten in einer Datenbank.

Die bestes Ergebnisse die Daten ordentlich wieder rauszubekommen, hatte ich mit diesen Parametern.
--no-set-names
--set-charset
--skip-set-charset
--default-character-set=charset_name

Mit den Parametern kann man ziemlich genau steuern wie man die Daten haben will.
MySQL und Charsets ist da eine Wissenschaft für sich.

Wenn man rausbekommen hat wie "kaputt" / doppelt encodiert die Daten einer Tabelle sind und etwas mit den Parametern spielt, bekommt man eigentlich wieder alles aus einem mysql server raus.

Gast
2014-12-31, 03:08:51
Ich habe damals eine Select Case-Anweisung geschrieben, die dann über eine Update-Anweisung die Daten wieder in die Datenbank gehieft hat.

Ohja, sowas hab ich auch schon gesehen. Suchen und ersetzen. bis man alles hat, und wehe man vergisst, dass es mehr als die deutschen Umlaut gibt.

Also ganz schlechte Lösung.