Първо, отговорът на Даниел е правилният и безопасен вариант.
За конкретния случай на промяна от SQL_ASCII към нещо друго, можете да измамите и просто да бутнете в каталога pg_database, за да преназначите кодирането на базата данни. Това предполага, че вече сте съхранили всички не-ASCII знаци в очакваното кодиране (или че просто не сте използвали знаци, различни от ASCII).
След това можете да направите:
update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'thedb'
Това няма да промени съпоставянето на базата данни, а просто как кодираните байтове се преобразуват в знаци (така че сега length('£123')
ще върне 4 вместо 5). Ако базата данни използва съпоставяне „C“, не трябва да има промяна в подреждането на ASCII низове. Вероятно ще трябва да възстановите всички индекси, съдържащи знаци, различни от ASCII.
Риск на купувача. Изхвърлянето и презареждането предоставят начин да проверите съдържанието на вашата база данни всъщност е в кодирането, което очаквате, а това не е така. И ако се окаже, че имате грешно кодирани данни в базата данни, спасяването ще бъде трудно. Така че, ако е възможно, изхвърлете и инициализирайте отново.