PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como posso alterar a codificação de banco de dados para um banco de dados PostgreSQL usando sql ou phpPgAdmin?


Em resumo, você não pode fazer isso apenas com phpPgAdmin ou SQL sem arriscar corrupção de dados existentes .Você tem que exportar todos os dados, criar banco de dados com codificação correta e restaurar os dados exportados.

É assim que você deve proceder:

  1. criar despejo de banco de dados :

    pg_dump your_database > your_database.sql

    isso salvará seu banco de dados no formato sql, na codificação que você possui atualmente.

  2. excluir banco de dados (ou renomeie):

    DROP DATABASE your_database

    se você tiver armazenamento suficiente para fazer isso, recomendo deixar o banco de dados antigo até ter certeza de que está tudo bem com o novo, renomear isto:

    ALTER DATABASE your_database RENAME TO your_database_backup;

  3. criar banco de dados com nova codificação :

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

  4. importar dados do dump criado antes :

    PGCLIENTENCODING=YOUR_OLD_ENCODING psql -f your_database.sql your_database

    você precisa definir a codificação do cliente psql para uma que você tinha no banco de dados antigo.

Alterar a codificação em tempo real não é possível, pois exigiria reescrever a maioria dos dados internos do banco de dados, o que é quase igual à recriação do db que descrevi.

É possível apenas alterar as informações internas do postgres sobre o banco de dados e quaisquer novos dados após essa alteração serão salvos corretamente, porém seus dados existentes podem ser corrompidos .