0

我正在尝试将具有 ' ' 编码的 Oracle 数据迁移到具有 ' we8mswin1252' 编码的我的数据库中UTF8

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

我越来越

invalid byte sequence error

我该怎么办?

4

1 回答 1

2

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

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

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

有两种方法来处理这个问题:

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

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

于 2016-09-13T07:12:47.583 回答