PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak mogę zmienić kodowanie bazy danych dla bazy danych PostgreSQL za pomocą sql lub phpPgAdmin?

Krótko mówiąc, nie możesz tego zrobić tylko z phpPgAdmin lub SQL bez ryzyka istniejącego uszkodzenia danych .Musisz wyeksportować wszystkie dane, stworzyć bazę danych z poprawnym kodowaniem i przywrócić wyeksportowane dane.

Postępuj w ten sposób:

  1. utwórz zrzut bazy danych :

    pg_dump your_database > your_database.sql

    spowoduje to zapisanie Twojej bazy danych w formacie sql, w kodowaniu, które aktualnie posiadasz.

  2. usuń bazę danych (lub zmień jego nazwę):

    DROP DATABASE your_database

    jeśli masz wystarczająco dużo miejsca, aby to zrobić, zalecam pozostawienie starej bazy danych, dopóki nie upewnisz się, że wszystko jest w porządku z nową, zmień nazwę to:

    ALTER DATABASE your_database RENAME TO your_database_backup;

  3. utwórz bazę danych z nowym kodowaniem :

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

  4. importuj dane ze zrzutu utworzonego przed :

    PGCLIENTENCODING=YOUR_OLD_ENCODING psql -f your_database.sql your_database

    musisz ustawić kodowanie klienta psql na to, które miałeś w starej bazie danych.

Zmiana kodowania w locie nie jest możliwa, ponieważ wymagałaby przepisania większości danych z wewnętrznej bazy danych, co jest prawie równoznaczne z odtworzeniem bazy danych w opisany przeze mnie sposób.

Można po prostu zmienić wewnętrzne informacje postgres dotyczące bazy danych, a wszelkie nowe dane po tej zmianie zostaną poprawnie zapisane, jednak istniejące dane mogą zostać uszkodzone .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak Mod() działa w PostgreSQL

  2. Nowe i ewoluujące funkcje korporacyjne PostgreSQL w najnowszych wydaniach

  3. przenoszenie danych z jednej tabeli do drugiej, edycja postgresql

  4. Jak zaimportować moduły lub zainstalować rozszerzenia w Postgresie?

  5. Dział ( / ) nie daje mojej odpowiedzi w postgresql