我需要通过 jdbc 执行超过 100000 条插入语句,如下所示:
Connection connection = datasource.getConnection();
String sql = "Insert Into Table (ColA, ColB) Values(?, ?)";
String[][] params = /*some array*/
PreparedStatement statement = connection.prepareStatement(sql);
for(String[] var : params)
{
statement.setString(1, var[0]);
statement.setString(2, var[1]);
statement.addBatch();
}
statement.executeBatch();
我认为这是一个常见问题,但我似乎无法找到这个问题的任何明确答案。它是一个跨数据库项目。
最佳答案
这将取决于您在 MySQL 中的 MAX_ALLOWED_PACKET 设置(如果这是您正在使用的)。
在客户端,MySQL 的默认最大数据包大小为 16 MB。
您可以通过以下任一方式更新值:
[mysqld]
max_allowed_packet=64M
或
mysql --max_allowed_packet=64M
http://dev.mysql.com/doc/refman/5.5/en/packet-too-large.html
当然,这是假设您使用的是 MySQL。其他数据库可能有不同的设置。
关于java - 可以添加到 PreparedStatement Batch Update 的参数集的最大数量是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9712710/