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