为什么Teradata有时会抛出“包含在一个USING行中的太多数据记录”?

时间:2014-10-29 20:12:45

标签: teradata

我正在使用jdbc并将数据上传到Teradata。我之前曾经拥有100,000行批次,总是对我来说很好。 没有数据集上传永远失败!

现在,我尝试上传one column table (all integers),我得到此Too many data records packed in one USING row?当我将批处理更改为16,383时,它工作正常。

我发现我仍然能够对100,000的表使用multiple columns行批处理,但是当我尝试上传一个带有single column的表时,它会抛出{{1} }。 。 。我不明白为什么?直观地说,单个列表应该更容易上传吗?这里发生了什么 ?

1 个答案:

答案 0 :(得分:2)

16383是使用非FastLoad INSERT for Teradata JDBC的PreparedStatement的限制。

您是否考虑过将TYPE = FASTLOAD添加到连接参数中,并允许Teradata调用FastLoad API来批量加载FastLoad支持的INSERT语句的数据?对于100K或更多记录的插入,建议使用 JDBC FastLoad 机制。这里最重要的因素是Teradata中的目标表必须为空。

如果它不为空,那么您可以加载一个空的阶段表,然后使用ANSI MERGE运算符执行阶段数据到目标表的UPSERT。