2014-03-06 86 views
1

我试图上传3MB真正小csv文件与30,000行和4列。我花了一个多小时为什么teradata fastload如此之慢?

cUrl = "jdbc:odbc:DSN; TYPE=FASTLOAD" ; 
Connection conn = DriverManager.getConnection(cUrl, username, password); 
String sql = "insert into Transactions(custID, transaction_date, amount, desc) values(?,?,?,?)"; 
PreparedStatement ps = conn.prepareStatement(sql); 

    for (...) 
    { 
     ps.setString(1, custID); 
     ps.setString(2, tran_date); 
     ps.setString(3, amount); 
     ps.setString(4, desc); 
     ps.addBatch(); 
    } 


    ps.executeBatch(); 

addBatch运行非常顺利。我得到ps.executeBatch();线,它需要它永远。上传3万行csv文件花了一个多小时。它应该是这样的方式:

回答

2

加载30.000行应该在几秒钟内运行最大。

您仍在使用错误的连接字符串,因此不支持ODBC中的FastLoad协议,TYPE = FASTLOAD可能会被默默忽略。

交易表的主要索引是什么?一个错误的PI和一个SET表可能会导致加载缓慢。

+0

谢谢。我没有指定主索引。 “SET”表是什么意思? –

+0

我想你是正确的关于odbc,所以我尝试切换到正常,但得到'单点登录不支持机制TD2 http://stackoverflow.com/questions/22237566/single-sing-on-is-not-supported -for-mechanism-td2 –

+0

如果你没有指定主索引,它可能会默认为第一列,这可能是一个不错的选择。什么是** SHOW TABLE交易; **返回? SET表意味着不允许重复行,这可能会导致大量的重复行检查。你也可以用SHOW TABLE来看SET或MULTISET。 – dnoeth