sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur kan jag ändra databaskodning för en PostgreSQL-databas med sql eller phpPgAdmin?

Kort sagt, du kan inte göra detta med endast phpPgAdmin eller SQL utan att riskera befintlig datakorruption .Du måste exportera all data, skapa en databas med korrekt kodning och återställa exporterad data.

Så här ska du gå tillväga:

  1. skapa databasdump :

    pg_dump your_database > your_database.sql

    detta kommer att spara din databas i sql-format, i kodning du har för närvarande.

  2. ta bort databas (eller byt namn på det):

    DROP DATABASE your_database

    om du har tillräckligt med lagringsutrymme för att göra det rekommenderar jag att du lämnar den gamla databasen tills du ser till att allt är OK med den nya, byt namn det:

    ALTER DATABASE your_database RENAME TO your_database_backup;

  3. skapa databas med ny kodning :

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

  4. importera data från dump skapad tidigare :

    PGCLIENTENCODING=YOUR_OLD_ENCODING psql -f your_database.sql your_database

    du måste ställa in psql-klientkodning till en du hade i den gamla databasen.

Att ändra kodning i farten är inte möjligt eftersom det skulle kräva omskrivning av de flesta interna databasdata, vilket nästan är lika med att återskapa db som jag beskrev.

Det är möjligt att bara ändra intern postgres-information om databasen och all ny data efter denna ändring kommer att sparas korrekt, men din befintliga data kan bli skadad .



  1. Validera dina PostgreSQL-säkerhetskopier på Docker

  2. SQL:skillnad mellan två datum

  3. SQL Server 2016:Säkerhetskopiera en databas

  4. hur kan jag uppdatera topp 100 poster i sql server