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

时间:2017-07-24 12:03:48

标签: oracle postgresql utf-8 plpgsql oracle-fdw

我将应用程序从oracle迁移到postgresql。在我已经迁移的其中一个函数中,我将数据从不同的oracle db(oracle中的db链接,postgresql中的oracle_fdw扩展)从几个表复制到postgresql db中的本地表中。但是,我收到了下一个错误:

invalid byte sequence for encoding "UTF8": 0x00

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

某种想法我该怎么办?

2 个答案:

答案 0 :(得分:3)

PostgreSQL不允许在字符串中使用“零”字符。

您必须先清理Oracle数据,然后才能从PostgreSQL中检索它们。

答案 1 :(得分:1)

现在它可与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');