我想用 jdbc 向 TERADATA 插入数据,但是速度很慢。我怎样才能让它更快?
我写了这段代码:
connection_tera= DriverManager.getConnection
(
"jdbc:teradata://192.168.x.xx/database=DBC,tmode=ANSI,charset=UTF8","dbc","dbc"
);
stmt_tera = connection_tera.prepareStatement("insert into a.b values(?)");
//some code here to start while loop
stmt_tera.setObject(i,reset.getobject(i));
stmt_tera.addBatch();
if(addedBatchNumber%100==0)
stmt_tera.executeBatch();
connection_tera.commit();
stmt_tera.clearBatch();
//some code here and finish while loop
我应该将 TYPE=FASTLOAD 之类的参数添加到连接字符串吗?还是别的?
最佳答案
如果您要加载到一个空 表,我会考虑使用 JDBC FastLoad。有关 JDBC 将数据插入 Teradata 表的性能的更多详细信息,请参阅 Teradata Developer Exchange 上的以下文章:Speed up your JDBC/ODBC Applications
如果您的表不为空,则将数据加载到首先为空的暂存(中间)表可能是有意义的。然后使用 ANSI MERGE
操作将 INSERT/UPDATE
逻辑应用于目标表。 MERGE
操作将比传统的 INSERT
和 UPDATE
语句执行得更快,因为该操作在 block 级别而不是行级别进行。在某些情况下,您甚至可以避免在数据应用于目标表之前假脱机处理源数据。
这是一个collection示例 Teradata JDBC 驱动程序。程序 205 到 209 是使用 FastLoad 的示例。
关于java - 我怎样才能批量插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17443722/