PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment puis-je changer l'encodage de la base de données pour une base de données PostgreSQL en utilisant sql ou phpPgAdmin ?

En bref, vous ne pouvez pas faire cela uniquement avec phpPgAdmin ou SQL sans risquer de corrompre les données existantes .Vous devez exporter toutes les données, créer une base de données avec un encodage correct et restaurer les données exportées.

Voici comment procéder :

  1. créer un vidage de base de données :

    pg_dump your_database > your_database.sql

    cela enregistrera votre base de données au format sql, dans l'encodage que vous avez actuellement.

  2. supprimer la base de données (ou renommez-le) :

    DROP DATABASE your_database

    si vous avez suffisamment de stockage pour le faire, je vous recommande de laisser l'ancienne base de données jusqu'à ce que vous vous assuriez que tout va bien avec la nouvelle, renommer il :

    ALTER DATABASE your_database RENAME TO your_database_backup;

  3. créer une base de données avec un nouvel encodage :

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

  4. importer les données du vidage créé auparavant :

    PGCLIENTENCODING=YOUR_OLD_ENCODING psql -f your_database.sql your_database

    vous devez définir l'encodage du client psql sur celui que vous aviez dans l'ancienne base de données.

Changer l'encodage à la volée n'est pas possible car cela nécessiterait de réécrire la plupart des données de la base de données interne, ce qui équivaut presque à recréer la manière db que j'ai décrite.

Il est possible de modifier simplement les informations postgres internes sur la base de données et toutes les nouvelles données après cette modification seront enregistrées correctement, mais vos données existantes pourraient être corrompues .