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.