【问题标题】:Does mysql client/server protocol supports batch insertsmysql客户端/服务器协议是否支持批量插入
【发布时间】:2015-06-11 21:28:10
【问题描述】:

我需要通过prepared statement通过mysql客户端/服务器协议对mysql表执行大量inserts。如何做得更好?是否只有一种方法可以构建查询,如下所示:

insert into my_table (?, ?), VALUES (1,2), (..., ...)....

然后发送或者mysql客户端/服务器协议支持批量插入?我在 mysql 文档中找到了COM_STMT_SEND_LONG_DATA,但我不确定它是否是我需要的。

我在 java 上看到了示例:Java: Insert multiple rows into MySQL with PreparedStatement 并且有 addBatch 方法。这种方法是只构建一个带有许多 VALUES 子句的 insert 请求还是使用 mysql 协议中的某些东西?

谢谢。

【问题讨论】:

标签: mysql


【解决方案1】:

MySQL 服务器支持批量插入,是的。你可以这样做:

INSERT INTO table_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9),(10,11,12);

【讨论】:

  • 如果我需要执行 1K 插入,10K 插入怎么办?
  • 我认为限制是 100 万次插入,但如果您想要更多,可以以某种方式更改。
  • max_allowed_pa​​cket 是设置查询大小上限的变量。由于协议开销,实际查询限制会稍微少一些。默认为 16M,您可以在客户端代码中使用 set max_allowed_packet=<number_of_bytes> 为每个连接在本地设置它。
【解决方案2】:

试试这样的:

插入members(memberID,CompanyName,Location) 值 (1,“约翰·多伊”,“匹兹堡”), (2,“简赛克斯”,“纽约”), (3,'鲍勃·史密斯','洛杉矶');

【讨论】:

    猜你喜欢
    • 2021-12-03
    • 2010-10-01
    • 2020-05-19
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    相关资源
    最近更新 更多