0

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

invalid byte sequence for encoding "UTF8": 0x00

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

某种想法我能做什么?

4

2 回答 2

3

PostgreSQL 不允许字符串中有“零”字符。

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

于 2017-07-24T12:09:47.387 回答
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');
于 2020-12-16T15:42:35.127 回答