Postgresql Postgres:事务中的命令不能超过2 ^32-2

Postgresql Postgres:事务中的命令不能超过2 ^32-2,postgresql,Postgresql,我用COPY命令插入一个70M行的大文件块。然后使用触发器处理插入的行。我认为如果我不尝试一次插入整个文件,我不会得到错误: 一个事务中的命令不能超过2^32-2个 不幸的是,我也有同样的错误。插入第一个文件,对于第二个文件,它会给出此错误。谁能解释一下,这个错误是什么?我该如何修复它? 这些表在Begging时被取消了记录,我想在整个上传完成后将它们记录下来,现在我正在尝试记录/取消记录每个步骤,但是,我不确定这是否会有帮助。您的问题是触发因素我认为您可能关心的唯一限制是每个事务2^32 SQ

我用COPY命令插入一个70M行的大文件块。然后使用触发器处理插入的行。我认为如果我不尝试一次插入整个文件,我不会得到错误:

一个事务中的命令不能超过2^32-2个

不幸的是,我也有同样的错误。插入第一个文件,对于第二个文件,它会给出此错误。谁能解释一下,这个错误是什么?我该如何修复它?
这些表在Begging时被取消了记录,我想在整个上传完成后将它们记录下来,现在我正在尝试记录/取消记录每个步骤,但是,我不确定这是否会有帮助。

您的问题是触发因素<代码>我认为您可能关心的唯一限制是每个事务2^32 SQL命令的CID限制。这不会直接阻止单个命令处理任意数量的行,但是,例如,如果每行触发器包含10个SQL命令,则在一个事务中只能触发大约4亿次我读过这篇文章,但我并不真正理解。这些文件包含相同数量的行,并执行大致相同数量的语句(INSERT、SELECT)。如果我使用COPY(成功完成)完成一个文件的复制,然后使用COPY启动一个新文件(第二个失败),这是否被视为新事务?我如何调试它,问题的解决方案是什么。我是否应该在第一个文件完成后提交?您必须明确您要执行的步骤。两份分开的副本不应该是问题。触发因素是什么?如果禁用触发器会发生什么情况?可能两个
COPY
语句都在同一事务中运行…如何完成事务并启动新的事务?我把它复制到一个诱人的地方。触发器为每个新的插入触发,然后触发器调用一个函数,该函数通过检查不同的字符串字段是否已经在规范化的表中来规范化数据。如果是,则获取它们的ID并复制到映射表中;如果不是,则插入,然后获取新ID并将收集的ID插入到映射表中。该函数不在可诱惑函数中写入任何内容。我一次上传三个文档,其中包含三个不同的表集、不同的命名触发器和函数。