Оракул переноса в postgresql недопустимая последовательность байтов для кодировки "UTF8": 0x00
Я мигрирую приложение из оракула в postgresql. В одной из функций, которые я уже перенес, я копирую данные из другой базы данных oracle (ссылка на db в oracle, расширение oracle_fdw в postgresql) из нескольких таблиц в локальную таблицу в моей базе данных postgresql. Тем не менее, я получаю следующую ошибку:
invalid byte sequence for encoding "UTF8": 0x00
Я видел, что у некоторых людей была такая проблема на этом форуме, но они не пытались копировать данные непосредственно из удаленной базы данных (они загружали данные из дампа или из CSV..).
Какая-то идея, что я могу сделать?
2 ответа
PostgreSQL не допускает символ "ноль" в символьных строках.
Вам придется очистить данные Oracle, прежде чем вы сможете извлечь их из PostgreSQL.
Теперь он работает с oracle_fdw 2.3.+ Вот код, который я использовал
select 'ALTER FOREIGN TABLE "'||table_schema||'"."'||table_name||'" ALTER COLUMN "'||column_name||'" OPTIONS (ADD strip_zeros ''true'');'
from information_schema."columns" c
where table_name ='my_foreign_table_name'
and table_schema ='my_schema_name_where_foreign_table_created'
and udt_name in ('varchar', 'bpchar');