Supportnet / Forum / Datenbanken
Daten in mySQL-Datenbank mit sql stapelweise ändern
Frage
Ich habe eine Datenbank in der mehrere Tabellen drin sind, wobei ziehmlich viele Datensätze etwas entstellt sind, und zwar sind hier die deutschen Umlaute falsch importiert worden. Ich könnte jetzt alle Datensätze durchgehen und die änder, aber bei 5000 Sätzen hört der Spaß auf. Gibt es eine Methode die Zeichen per SQL wieder richtig zu stellen?
Antwort 1 von son_quatsch
Mehrere Möglichkeiten gibt es:
- nochmal importieren, diesmal auf Codepages achten
- Ausgabe entsprechend umstellen, dann ist egal, wie es in den Tabellen steht
- UPDATE tabelle SET spalte= REPLACE(spalte, 'é', ö');
- nochmal importieren, diesmal auf Codepages achten
- Ausgabe entsprechend umstellen, dann ist egal, wie es in den Tabellen steht
- UPDATE tabelle SET spalte= REPLACE(spalte, 'é', ö');
Antwort 2 von DixiDix
Kenne mich da leider nicht so aus. Sehe ich das richtig, ich muss dies Angaben einfach in das SQL-Fenster (hier myphpadmin) eingeben
UPDATE `<meinetabelle>` SET `<spalte>` = REPLACE (`<spalte>`, 'é', ö');
Muss da nicht noch was rein:
SELECT * FROM `<meinetabelle>` WHERE 1`<spalte>`
oder wie muss der Befehl lauten?
UPDATE `<meinetabelle>` SET `<spalte>` = REPLACE (`<spalte>`, 'é', ö');
Muss da nicht noch was rein:
SELECT * FROM `<meinetabelle>` WHERE 1`<spalte>`
oder wie muss der Befehl lauten?
Antwort 3 von son_quatsch
Nein, da muss nicht noch was rein. Es reicht (auch ohne Accent Graves) das Kommando
...wobei é und ö nur eine Beispielkombination sind. Welche Zeichen mit welchen ersetzt werden sollen, musst du selbst herausfinden. Und dann auch pro zu ersetzendem Zeichen ausführen ;-)
UPDATE <meinetabelle> SET <spalte> = REPLACE (<spalte>, 'é', ö');...wobei é und ö nur eine Beispielkombination sind. Welche Zeichen mit welchen ersetzt werden sollen, musst du selbst herausfinden. Und dann auch pro zu ersetzendem Zeichen ausführen ;-)
Antwort 4 von DixiDix
Ah ja das geht, und ginge das auf einen Rutsch auch auf die ganze Datenbank anzuwenden?
Antwort 5 von son_quatsch
Nein, nur pro Tabelle. Du kannst aber mehrere Kommandos auf einmal ausführen - statt das jeweils vorherige immer wieder abzuändern. Also z.B.:
UPDATE <meinetabelle1> SET <spalte1> = REPLACE (<spalte1>, 'é', ö'), <spalte2> = REPLACE (<spalte2>, 'é', ö'), <spalte3> = REPLACE (<spalte3>, 'é', ö');
UPDATE <meinetabelle2> SET <spalte> = REPLACE (<spalte>, 'û, ü');
UPDATE <meinetabelle3> SET <spalte3> = REPLACE (<spalte3>, '~', ß');
UPDATE <meinetabelle1> SET <spalte1> = REPLACE (<spalte1>, 'é', ö'), <spalte2> = REPLACE (<spalte2>, 'é', ö'), <spalte3> = REPLACE (<spalte3>, 'é', ö');
UPDATE <meinetabelle2> SET <spalte> = REPLACE (<spalte>, 'û, ü');
UPDATE <meinetabelle3> SET <spalte3> = REPLACE (<spalte3>, '~', ß');
Antwort 6 von DixiDix
Danke, hat geholfen

