错误:COPY转义必须是一个单字节字符(多重分隔符似乎在Postgres 9.0上有效,但在Postgres 9.2上无效)

问题描述 投票:0回答:1

我有一个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的寿命已尽。新服务器运行CentOS7。我相信这两个服务器都使用默认CentOS存储库中的默认Postgres版本。我肯定知道CentOS 7服务器确实在运行默认的Postgres版本,因为我是通过yum自己安装的。

任何帮助将不胜感激。

此外,如果源被修改,有没有一种方法可以将旧的Postgres服务器,依赖项和可执行文件复制到我们的新服务器上?

我有一个Talend企业作业,可通过COPY命令将数据加载到PostgreSQL数据库中。迁移到新服务器时,此命令失败,并显示以下错误消息:org.postgresql.util ....

java postgresql talend
1个回答
0
投票

我找到了问题的答案。显然我们正在使用的Talend版本和包含的Postgres驱动程序存在一个错误。

© www.soinside.com 2019 - 2024. All rights reserved.