java - 用java将大量数据插入数据库

标签 java mysql jdbc

这个问题可能会被很多人问到,但是, 所以我尝试使用java将400万条记录插入数据库, 我做了很多谷歌搜索并尝试了 access 和 MySQL。两者几乎一模一样, 对于MySQL,我尝试了statement.addBatch();,但仍然需要很长时间。 问题是,我能得到的最佳时间是什么?最好的方法是什么?

        counter++;
        String sqlQuery = "INSERT INTO employees VALUES("some query")";

        sqlState.addBatch(sqlQuery);

        if (counter == 1000) {

            sqlState.executeBatch();

            counter = 0;
        }

我使用的 Batch 是否正确?

最佳答案

重用单个PreparedStatements,并为每个记录设置参数,然后将其添加到批处理中。

PreparedStatement ps = conn.prepareStatement("Insert into employees (f1, f2, f3) VALUES (?, ?, ?)");
while (hasMoreRecords) {
  ps.setString(1, "v1");
  ps.setString(2, "v2");
  ....
  ps.addBatch();
  if (++i % 1000 == 0) {
    ps.executeBatch();
  }
}
ps.executeBatch();

这不会有很大的差异,但却是最佳的。

您的INSERT是否使用子查询?也许该子查询很慢。

关于java - 用java将大量数据插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32337099/

相关文章:

java - 计算java中完成一个函数的平均时间

mysql - 如何实现基于同义词的上下文搜索?

mysql - MySQL 中重复列自动递增

JAVA_HOME 和 java -version

java - 将结果集中的对象添加到数组列表

java - 为什么我的 java 程序不接受用户的字母输入?

java - JDBC Mysql语法错误

java - 基本的 Android 应用方向

java - 当连接在事务中关闭时会发生什么?

java - 无法通过 JDBC 驱动程序连接到 *.dbf 文件