sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo puedo cambiar la codificación de la base de datos para una base de datos PostgreSQL usando sql o phpPgAdmin?

En resumen, no puede hacer esto solo con phpPgAdmin o SQL sin correr el riesgo de corrupción de datos existentes .Tiene que exportar todos los datos, crear una base de datos con la codificación correcta y restaurar los datos exportados.

Así es como debe proceder:

  1. crear volcado de base de datos :

    pg_dump your_database > your_database.sql

    esto guardará su base de datos en formato sql, en la codificación que tiene actualmente.

  2. eliminar base de datos (o cambiarle el nombre):

    DROP DATABASE your_database

    si tiene suficiente almacenamiento para hacerlo, le recomiendo que deje la base de datos anterior hasta que se asegure de que todo esté bien con la nueva, cambie el nombre es:

    ALTER DATABASE your_database RENAME TO your_database_backup;

  3. crear base de datos con nueva codificación :

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

  4. importar datos del volcado creado antes :

    PGCLIENTENCODING=YOUR_OLD_ENCODING psql -f your_database.sql your_database

    debe configurar la codificación del cliente psql en una que tenía en la base de datos anterior.

No es posible cambiar la codificación sobre la marcha, ya que requeriría volver a escribir la mayoría de los datos de la base de datos interna, lo que es casi igual a recrear la base de datos de la forma que describí.

Es posible simplemente modificar la información interna de postgres sobre la base de datos y cualquier dato nuevo después de esta modificación se guardará correctamente, sin embargo, sus datos existentes podrían corromperse .