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

Jak zmienić kodowanie znaków w bazie danych postgres?

Po pierwsze, odpowiedź Daniela to prawidłowa, bezpieczna opcja.

W konkretnym przypadku zmiany z SQL_ASCII na coś innego, możesz oszukać i po prostu przeszukać katalog pg_database, aby ponownie przypisać kodowanie bazy danych. Zakłada to, że zapisałeś już wszelkie znaki spoza ASCII w oczekiwanym kodowaniu (lub po prostu nie użyłeś żadnych znaków spoza ASCII).

Następnie możesz zrobić:

update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'thedb'

Nie zmieni to sortowania bazy danych, tak jak zakodowane bajty są konwertowane na znaki (więc teraz length('£123') zwróci 4 zamiast 5). Jeśli baza danych używa sortowania „C”, nie powinno być żadnych zmian w kolejności ciągów ASCII. Prawdopodobnie będziesz jednak musiał przebudować wszystkie indeksy zawierające znaki spoza ASCII.

Zastrzeżenie zleceniodawcy. Zrzucanie i ponowne ładowanie umożliwia sprawdzenie, czy zawartość bazy danych jest rzeczywiście w oczekiwanym kodowaniu, a to nie. A jeśli okaże się, że w bazie danych masz jakieś niewłaściwie zakodowane dane, ratowanie będzie trudne. Więc jeśli możesz, zrzuć i ponownie zainicjuj.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można znaleźć punktu wejścia o nazwie „InterlockedIncrement” w bibliotece DLL „kernel32.dll” — [ochrona poczty e-mail] 64-bitowa

  2. Nie znaleziono klasy podczas ładowania JDBC org.postgresql.Driver

  3. Pierwsze kroki z Postgresem 13 na Ubuntu 20.04

  4. Webinarium:Nowe funkcje w Postgres 12 [Kontynuacja]

  5. Uzyskać kolejność ostatnich N wierszy w bazie danych?