java - Teradata-jdbc : What's the point of using FaSTLoad if java has memory limitations?

标签 java jdbc teradata

这是来自 teradata 网站的示例 jdbc FaSTLoad 程序的链接:http://developer.teradata.com/doc/connectivity/jdbc/reference/current/samp/T20205JD.java.txt

它只插入一行,所以我通过替换以下代码修改它以插入 500K 行:

                        pstmt.setInt(1, 1);
                        pstmt.setString(2, strBuf);
                        pstmt.addBatch();
                        batchCount++;

与:

                        for (int i = 0; i < 500000 ; i ++ ) {
                        pstmt.setInt(1, i);
                        pstmt.setString(2, strBuf);
                        pstmt.addBatch();
                        batchCount++;
                        }

当然失败了,因为java内存不足。

所以 FaSTLoads jdbc 无法上传 500K 行非常简单的数据。 .因为 addBatch() 方法在某些时候会抛出 outOfMemory 异常。

但我读到 FaSTLoad 能够上传数百万行! ! !但是我在任何地方都找不到任何真实的例子。如何克服 outOfMemory java 异常?

任何人都可以展示一个使用 jdbcFaSTLoad(不是 FaSTLoadCSV!)上传假设 1M 行的示例吗?


附言:

1) xmx 堆空间的增加达不到目的,因为每增加一个addBatch() 方法都会执行得更慢,并且额外的堆有限制(通常是 4 g )

2) 我不需要 FaSTLoadCSV ,因为它在 ttu 14 之前不支持文本限定符并且还有其他问题

最佳答案

您必须 setAutoCommit(false) 然后简单地 executeBatch 多次,例如在每 50,00 或 100,000 个 addBatch 之后,在您用完内存之前。最后,您提交

参见 Speed up your JDBC/ODBC applications在 developer.teradata.com 上

关于java - Teradata-jdbc : What's the point of using FaSTLoad if java has memory limitations?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26684648/

相关文章:

java - 无法使用 Intent.ACTION_SEND_MULTIPLE 找到工作解决方案以将多个图像附加到电子邮件中

java - 当我运行应用程序时它会重新启动我的应用程序

java - 使用 JCS : Failed to retrieve javax. sql :jdbc-stdext-2. 0 时出错

sql - 修改 Teradata 中表的主索引

sql - 使用另一个表中的数据更新 Teradata 表中的列

java - 如何使用 Tomcat 指定远程 JKS keystore ?

java - 我如何根据参数拆分html数据

java - 使用JDBC和MySQL解决“通信链接失败”问题

java - SQL Server 存储过程和 jdbc

teradata - 如何使用 Teradata SQL 检查字段是否包含所有数值?