我将应用程序从oracle迁移到postgresql。在我已经迁移的其中一个函数中,我将数据从不同的oracle db(oracle中的db链接,postgresql中的oracle_fdw扩展)从几个表复制到postgresql db中的本地表中。但是,我收到了下一个错误:
invalid byte sequence for encoding "UTF8": 0x00
我看到有些人在这个论坛中遇到过这样的问题,但他们没有尝试直接从远程数据库复制数据(他们从转储或csv加载数据......)。
某种想法我该怎么办?
答案 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');