Postgres 外部数据包装器编码问题

Postgres foreign data wrapper encoding issue

我正在尝试将使用“we8mswin1252”编码的 Oracle 数据迁移到我的 数据库,该数据库使用“UTF8”编码。

我正在使用外部数据包装器

我正在

invalid byte sequence error

我该怎么办?

此类错误可能由两件事引起:

  • 您的 Oracle 字符串中可能有零字节。这在 Oracle 中是允许的(即使它有问题),但在 PostgreSQL 中是禁止的。

  • Oracle 中的数据很容易损坏,因为它对编码检查非常草率,并且允许您在客户端编码和服务器编码相同时插入任意非法字节序列。

有两种方法可以解决这个问题:

  • 正确的做法:在Oracle端修复数据。 oracle_fdw 将通过告诉您结果集中的哪一行导致错误来为您提供支持。

  • 草率的方法:使用具有数据库编码sql_ascii的PostgreSQL数据库,这将允许您将任何内容存储在字符串中(零字节除外)。