ERROR: COPY escape must be a single one-byte character (multi-delimiter appears to work on Postgres 9.0 but does not on Postgres 9.2)
ERROR: COPY escape must be a single one-byte character (multi-delimiter appears to work on Postgres 9.0 but does not on Postgres 9.2)
我有一个 Talend 企业作业,它通过 COPY
命令将数据加载到 PostgreSQL 数据库中。迁移到新服务器时,此命令失败并显示以下错误消息:org.postgresql.util.PSQLException:ERROR: COPY escape must be a single one-byte character
事实是,我查看了 Postgres 9.0 和 9.2 的文档。两个文档都说不允许使用多字节定界符。所以我很困惑为什么这项工作在 Postgres 9.0 上完美运行,但在 9.2 上却不行。
我无法编辑这个 Talend 作业,因为它太旧了而且我们没有这个作业的源代码了。我看不到实际的分隔符是什么。我也无法确切地看到 COPY
命令是如何 运行,例如它是否通过 Postgres 驱动程序直接推送到服务器,或者它是否在某处创建了一个临时 CSV 文件然后加载数据到服务器。我相信我们设置多字节定界符的原因是由于在多个表的一些列中使用了各种特殊字符。
我不知道对旧 9.0 Postgres 服务器的源代码有任何编辑。
我们迁移服务器的原因是 CentOS 5 的生命周期结束。新服务器 运行s CentOS 7。我相信两台服务器都使用默认的 Postgres 版本CentOS 存储库。我确定 CentOS 7 服务器确实是 运行 的默认 Postgres 版本,因为我自己通过 yum
.
安装了它
如有任何帮助,我们将不胜感激。
另外,有没有办法将旧的 Postgres 服务器、依赖项和可执行文件复制到我们的新服务器,以防源代码被修改?
我找到了问题的答案。显然,我们使用的 Talend 版本和包含的 Postgres 驱动程序存在错误。
唯一的解决方案是通过下载源代码并针对 CentOS 7 库进行编译,在我们的 CentOS 7 机器上安装 Postgres 9.0。
错误可以在这里找到:Talend Bug
我有一个 Talend 企业作业,它通过 COPY
命令将数据加载到 PostgreSQL 数据库中。迁移到新服务器时,此命令失败并显示以下错误消息:org.postgresql.util.PSQLException:ERROR: COPY escape must be a single one-byte character
事实是,我查看了 Postgres 9.0 和 9.2 的文档。两个文档都说不允许使用多字节定界符。所以我很困惑为什么这项工作在 Postgres 9.0 上完美运行,但在 9.2 上却不行。
我无法编辑这个 Talend 作业,因为它太旧了而且我们没有这个作业的源代码了。我看不到实际的分隔符是什么。我也无法确切地看到 COPY
命令是如何 运行,例如它是否通过 Postgres 驱动程序直接推送到服务器,或者它是否在某处创建了一个临时 CSV 文件然后加载数据到服务器。我相信我们设置多字节定界符的原因是由于在多个表的一些列中使用了各种特殊字符。
我不知道对旧 9.0 Postgres 服务器的源代码有任何编辑。
我们迁移服务器的原因是 CentOS 5 的生命周期结束。新服务器 运行s CentOS 7。我相信两台服务器都使用默认的 Postgres 版本CentOS 存储库。我确定 CentOS 7 服务器确实是 运行 的默认 Postgres 版本,因为我自己通过 yum
.
如有任何帮助,我们将不胜感激。
另外,有没有办法将旧的 Postgres 服务器、依赖项和可执行文件复制到我们的新服务器,以防源代码被修改?
我找到了问题的答案。显然,我们使用的 Talend 版本和包含的 Postgres 驱动程序存在错误。
唯一的解决方案是通过下载源代码并针对 CentOS 7 库进行编译,在我们的 CentOS 7 机器上安装 Postgres 9.0。
错误可以在这里找到:Talend Bug