将 oracle 迁移到 postgresql 用于编码 "UTF8" 的无效字节序列:0x00

migration oracle to postgresql invalid byte sequence for encoding "UTF8": 0x00

我正在将应用程序从 oracle 迁移到 postgresql。在我已经迁移的功能之一中,我将数据从不同的 oracle 数据库(oracle 中的数据库 link,postgresql 中的 oracle_fdw 扩展名)从几个 table 复制到本地 table 在我的 postgresql 数据库中。但是,我收到下一个错误:

invalid byte sequence for encoding "UTF8": 0x00

我在这个论坛上看到有些人有这种问题,但他们没有尝试直接从远程数据库复制数据(他们从转储或 csv.. 加载数据)。

一些想法我能做什么?

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');