0
我有一個代碼,它使用preparedStatement管理ArrayList並將每個項目導入到mySQL中,但我不知道如何提高此代碼的速度。我嘗試使用.addBatch(),但它沒有幫助。這是代碼。如何快速將大數據傳輸到MySQL(JDBC)?
try {
connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
preparetStmt = connection.prepareStatement(INSERT_NEW);
for (int i = 0; i < priceItems.size(); i++) {
preparetStmt.setString(1, priceItems.get(i).getName());
preparetStmt.setString(2, priceItems.get(i).getQuantity());
preparetStmt.setString(3, priceItems.get(i).getCost());
preparetStmt.setString(4, priceItems.get(i).getAnnotation());
preparetStmt.addBatch();
}
preparetStmt.executeBatch();
if (!connection.isClosed()) {
System.out.print("DB is closed.");
}
} catch (SQLException e) {
e.printStackTrace();
}
幫助我找到方法來提高加載速度加載此語句。 1500件物品需要2分鐘以上,我需要發送超過150K件物品。
您是否必須使用JDBC或者您是否直接訪問數據庫服務器?如果你有一個像csv這樣的文件,可以將批量插入數據庫的速度要快很多 – Noob
檢查addBatch()的文檔。你這樣做的方式看起來不對。網上還有批處理教程,您也可以查看。解決這些問題需要從已知的和未知的工作中支持和開始。所以很難讓人來幫助你。 – jdv
此外,您應該清楚這是一次性操作,還是這將是典型的常規數據集移動。這會影響模式,索引等。 – jdv