Starsze wersje PostgreSQL nie były tak rygorystyczne pod względem zgodności z UTF-8 niż nowsze wersje. Przypuszczalnie próbujesz przywrócić dane zawierające nieprawidłowy kod UTF-8 ze starszej wersji do nowszej wersji.
Nieprawidłowe ciągi muszą zostać wyczyszczone. Możesz wykonać tę procedurę dla każdej tabeli, która nie została zaimportowana z powodu tych błędów:
-
Wyodrębnij zawartość tabeli z pliku zrzutu do zwykłego pliku tekstowego SQL:
pg_restore --table=tablename --data-only dumpfile >plaintext.sql
-
Usuń nieprawidłowe znaki w edytorze tekstu lub automatycznie za pomocą
iconv
:iconv -c -f UTF-8 -t UTF-8 <plaintext.sql >plaintext-cleaned.sql
-
Zaimportuj oczyszczone dane:
psql dbname < plaintext-cleaned.sql