Java 如何快速将大数据传输到mysql(JDBC)?
我有一个代码,它管理Java 如何快速将大数据传输到mysql(JDBC)?,java,mysql,jdbc,arraylist,prepared-statement,Java,Mysql,Jdbc,Arraylist,Prepared Statement,我有一个代码,它管理ArrayList,并使用preparedStatement将每个项目导入MySQL。我不知道如何提高这段代码的速度。我试着使用.addBatch(),但没用。这是代码 try { connection = DriverManager.getConnection(URL, USERNAME, PASSWORD); preparetStmt = connection.prepareStatement(INSERT_NEW); for (int i = 0
ArrayList
,并使用preparedStatement将每个项目导入MySQL。我不知道如何提高这段代码的速度。我试着使用.addBatch()
,但没用。这是代码
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();
}
试试看{
connection=DriverManager.getConnection(URL、用户名、密码);
preparetStmt=连接。prepareStatement(插入新的);
对于(int i=0;i
请帮助我找到提高加载此语句速度的方法。对于1500个项目,它需要2分钟以上的时间。我需要发送超过15万个项目。有很多方法可以改进此代码:
您必须使用JDBC还是直接访问数据库服务器?如果您有一个类似csv的文件,那么将批插入数据库会快得多。请检查文档中的addBatch()。你这样做看起来不对。网上也有批处理教程,你可以查看。解决这类问题需要备份,从已知的开始,到未知的工作。因此,很难找到人来帮助您。此外,您应该清楚这是一次性操作,还是典型的定期数据集移动。这会对模式、索引等产生影响。现在我使用JDBC并连接到本地主机,但将来我希望在站点上重新定位db。我使用ApachePoi提取excel数据并将其转换为arraylistMySQL,以便直接加载CSV数据。根本不需要让JDBC或Java参与其中。为什么要测试连接是否在不可能关闭的位置关闭,为什么要打印连接关闭时却没有关闭?