2014-03-06 85 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