Postgres 外部数据包装器编码问题
Postgres foreign data wrapper encoding issue
我正在尝试将使用“we8mswin1252
”编码的 Oracle 数据迁移到我的 postgres 数据库,该数据库使用“UTF8
”编码。
我正在使用外部数据包装器。
我正在
invalid byte sequence error
我该怎么办?
此类错误可能由两件事引起:
您的 Oracle 字符串中可能有零字节。这在 Oracle 中是允许的(即使它有问题),但在 PostgreSQL 中是禁止的。
Oracle 中的数据很容易损坏,因为它对编码检查非常草率,并且允许您在客户端编码和服务器编码相同时插入任意非法字节序列。
有两种方法可以解决这个问题:
正确的做法:在Oracle端修复数据。 oracle_fdw
将通过告诉您结果集中的哪一行导致错误来为您提供支持。
草率的方法:使用具有数据库编码sql_ascii
的PostgreSQL数据库,这将允许您将任何内容存储在字符串中(零字节除外)。
我正在尝试将使用“we8mswin1252
”编码的 Oracle 数据迁移到我的 postgres 数据库,该数据库使用“UTF8
”编码。
我正在使用外部数据包装器。
我正在
invalid byte sequence error
我该怎么办?
此类错误可能由两件事引起:
您的 Oracle 字符串中可能有零字节。这在 Oracle 中是允许的(即使它有问题),但在 PostgreSQL 中是禁止的。
Oracle 中的数据很容易损坏,因为它对编码检查非常草率,并且允许您在客户端编码和服务器编码相同时插入任意非法字节序列。
有两种方法可以解决这个问题:
正确的做法:在Oracle端修复数据。
oracle_fdw
将通过告诉您结果集中的哪一行导致错误来为您提供支持。草率的方法:使用具有数据库编码
sql_ascii
的PostgreSQL数据库,这将允许您将任何内容存储在字符串中(零字节除外)。