Starší verze PostgreSQL nebyly tak přísné na shodu s UTF-8 než novější verze. Pravděpodobně se pokoušíte obnovit data obsahující neplatné UTF-8 z takové starší verze do novější verze.
Neplatné řetězce musí být vyčištěny. Tento postup můžete použít pro každou tabulku, která nebyla importována kvůli těmto chybám:
-
Extrahujte obsah tabulky ze souboru výpisu do souboru SQL ve formátu prostého textu:
pg_restore --table=tablename --data-only dumpfile >plaintext.sql
-
Odstraňte neplatné znaky v textovém editoru nebo automaticky pomocí
iconv
:iconv -c -f UTF-8 -t UTF-8 <plaintext.sql >plaintext-cleaned.sql
-
Importujte dezinfikovaná data:
psql dbname < plaintext-cleaned.sql