sql >> Database >  >> RDS >> PostgreSQL

Hoe kan ik de databasecodering voor een PostgreSQL-database wijzigen met behulp van sql of phpPgAdmin?

Kortom, u kunt dit niet doen met alleen phpPgAdmin of SQL zonder het risico te lopen bestaande gegevenscorruptie te riskeren .U moet alle gegevens exporteren, een database maken met de juiste codering en geëxporteerde gegevens herstellen.

Zo gaat u te werk:

  1. databasedump maken :

    pg_dump your_database > your_database.sql

    dit zal je database opslaan in sql-formaat, in de codering die je momenteel hebt.

  2. database verwijderen (of hernoem het):

    DROP DATABASE your_database

    als je genoeg opslagruimte hebt om het te doen, raad ik aan de oude database te verlaten totdat je zeker weet dat alles in orde is met de nieuwe, hernoemen het:

    ALTER DATABASE your_database RENAME TO your_database_backup;

  3. database maken met nieuwe codering :

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

  4. importeer gegevens van eerder gemaakte dump :

    PGCLIENTENCODING=YOUR_OLD_ENCODING psql -f your_database.sql your_database

    je moet de psql-clientcodering instellen op een die je had in de oude database.

Het is niet mogelijk om de codering on-the-fly te wijzigen, omdat het de meeste interne databasegegevens zou moeten herschrijven, wat bijna gelijk is aan het opnieuw creëren van db zoals ik heb beschreven.

Het is mogelijk om interne postgres-informatie over de database te wijzigen en alle nieuwe gegevens na deze wijziging worden correct opgeslagen, maar uw bestaande gegevens kunnen beschadigd raken .



  1. FOUT:kon bibliotheek "/opt/PostgreSQL/9.0/lib/postgresql/plperl.so" niet laden:libperl.so:

  2. org.hibernate.internal.util.config.ConfigurationException:kon cfg.xml-bron [/HibernateTest/src/hibernate.cfg.xml] niet vinden

  3. Verbeter de prestaties van UDF's met NULL ON NULL INPUT

  4. Migratie van SQL-databases met opdrachtregel