我尝试上传3MB非常小的csv文件,包含30,000行和4列。我花了一个多小时
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();
线它永远占用它。上传一个包含30,000行的3 MB csv文件花了一个多小时。它是应该的方式
答案 0 :(得分:2)
加载30.000行应该在几秒钟内运行。
你仍然使用错误的连接字符串,在ODBC中不支持FastLoad协议,TYPE = FASTLOAD可能会被默默忽略。
交易表的主要索引是什么?错误的PI加上SET表可能会导致加载缓慢。