在java中将大量数据插入数据库

时间:2015-09-01 16:56:00

标签: java mysql jdbc

这可能会被问到很多,但是, 所以我试图使用java将400万条记录插入数据库, 我做了很多谷歌搜索并尝试访问和MySQL。两者几乎相同, 使用MySQL我试过statement.addBatch();,但仍然需要永远。 问题是,我能得到的最佳时间是什么?什么是最好的方式?

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

        sqlState.addBatch(sqlQuery);

        if (counter == 1000) {

            sqlState.executeBatch();

            counter = 0;
        }

我也正在使用批次吗?

1 个答案:

答案 0 :(得分:0)

重复使用一个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是否使用子查询?也许这个子查询很慢。