PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie kann ich die Datenbankkodierung für eine PostgreSQL-Datenbank mit sql oder phpPgAdmin ändern?

Kurz gesagt, Sie können dies nicht nur mit phpPgAdmin oder SQL tun, ohne bestehende Datenbeschädigung zu riskieren .Sie müssen alle Daten exportieren, eine Datenbank mit korrekter Kodierung erstellen und die exportierten Daten wiederherstellen.

So sollten Sie vorgehen:

  1. Datenbank-Dump erstellen :

    pg_dump your_database > your_database.sql

    Dadurch wird Ihre Datenbank im SQL-Format gespeichert, in der Kodierung, die Sie derzeit haben.

  2. Datenbank löschen (oder umbenennen):

    DROP DATABASE your_database

    Wenn Sie genug Speicherplatz dafür haben, empfehle ich, die alte Datenbank zu belassen, bis Sie sicher sind, dass mit der neuen alles in Ordnung ist, umbenennen es:

    ALTER DATABASE your_database RENAME TO your_database_backup;

  3. Datenbank mit neuer Kodierung erstellen :

    CREATE DATABASE your_database WITH ENCODING 'UNICODE' TEMPLATE=template0;

  4. Daten aus zuvor erstelltem Dump importieren :

    PGCLIENTENCODING=YOUR_OLD_ENCODING psql -f your_database.sql your_database

    Sie müssen die psql-Client-Codierung auf eine setzen, die Sie in der alten Datenbank hatten.

Das Ändern der Kodierung im laufenden Betrieb ist nicht möglich, da dies das Umschreiben der meisten internen Datenbankdaten erfordern würde, was fast der Neuerstellung der db entspricht, wie ich es beschrieben habe.

Es ist möglich, nur interne Postgres-Informationen über die Datenbank zu ändern, und alle neuen Daten nach dieser Änderung werden korrekt gespeichert, Ihre vorhandenen Daten können jedoch beschädigt werden .