java - 可以添加到 PreparedStatement Batch Update 的参数集的最大数量是多少?

标签 java sql prepared-statement

我需要通过 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/

相关文章:

mysql - 如何从准备好的语句中获取查询计划

php - 将 MySQL 查询返回的单列值传递给 PHP 脚本

java - 构建链表java

php - SQL 查询根据month_year 获取行

Mysql 获取最新的item数量

sql - 为什么 SQLiteStudio(和其他)默认情况下不以人类可读的格式显示日期时间?

java - 我做错了什么,一切都显示在一行上?

java - 如何将首选项与 Activity 联系起来?

java - 开始 : Applet not initialized