Wie konvertiert man eine Datenbank in postgreSQL nach utf8?

9

Ich habe gerade eine DB in PostgreSQL für mein Projekt und habe gerade festgestellt, dass es in der SQL_ASCII-Kodierung ist, was "keine Kodierung" bedeutet, denke ich.

Was ist der einfachste Weg dies in utf8 umzuwandeln? Und ich weiß, dass die DB in latin1 sein sollte, wird die Konvertierung den Inhalt beschädigen?

Danke!

    
darkjh 10.01.2012, 16:23
quelle

4 Antworten

11

Die Konvertierung in UTF8 sollte Ihre Daten nicht beschädigen, da ich glaube, dass es keine Zeichen gibt, die nicht übersetzen.

Am besten ist es, wenn Sie Ihre Datenbank neu erstellen, sie dumpen, eine utf8-Datenbank erstellen und dann den Speicherauszug für diese neue Datenbank wiederherstellen.

%Vor%

Sie können die Datenbanken natürlich umbenennen, sobald Sie zufrieden sind, dass der neue UTF8 mit Ihren Daten übereinstimmt.

    
Philip Couling 10.01.2012, 20:12
quelle
2

Bei der UTF-8-Konvertierung geht es darum, welche Art von Zeichen in der Nicht-UTF-8-Datenbank gespeichert wurde: Abhängig von den Daten schlägt die vorgeschlagene Lösung möglicherweise fehl. Ich habe es geschafft, meine nach diesem Tutorial mit recode (ein kleines Tool aus dem GNU-Projekt) zu konvertieren mit dem Sie die Kodierung einer bestimmten Datei ändern können, und ich habe folgendes gefunden:

%Vor%     
eddyce 08.07.2015 06:45
quelle
1

Ich habe die Verwendung dieser Befehle gelöst;

1-) Export

%Vor%

und nach

2-) Importieren

%Vor%

diese Befehle haben mir geholfen, das Problem der Konvertierung SQL_ASCII - UTF-8

zu lösen     
koyot 20.01.2014 18:46
quelle
0

Ich suchte im gesamten Internet nach einer Lösung für dieses Problem, und die obige Koyots-Lösung funktionierte erstmals, nachdem ich unzählige Stunden damit verschwendet habe, alles zu versuchen, um eine alte SQL_ASCII-Datenbank in eine neue UTF8-Datenbank zu migrieren

Um die Lösung zu erweitern ...

  • Ich habe zuerst alle Websites auf eine Wartungsseite
  • umgeleitet
  • Die Datenbank wurde umbenannt, indem "_ascii" an den Namen angehängt wurde, nur um sicher zu sein, dass sich nichts damit verbinden konnte und ich weiß, dass dies die ursprüngliche Datenbank war !!
  • Erstellte eine neue utf8-Datenbank mit "_utf8", die an den Namen angehängt wurde (append TEMPLATE = template0 an die CREATE DATABASE STATEMENT)
  • Die ascii-Datenbank wurde gesichert
  • Die Sicherung wurde in der neuen utf8-Datenbank wiederhergestellt
  • Umbenennung der utf8-Datenbank in das, was ich vorher genannt hatte
  • Die Gesamtgröße der Check-Datenbank ist ungefähr so ​​groß wie die ursprüngliche Datenbank. Wird aufgrund von toten Tupeln usw. nicht genau übereinstimmen. Die neue Datenbank sollte basierend auf dem Füllfaktor usw. kleiner sein.
  • Deaktivieren Sie Website-Weiterleitungen
  • Testen Sie alle Websites

Ich würde vorschlagen, beide Datenbanken einige Wochen lang zu warten, bis Sie sicher sind, dass Sie keine Daten verloren haben (vorausgesetzt, Sie können Speicherplatz freihalten)

    
Richard Hetherington 03.12.2015 09:05
quelle