2015-06-11 49 views
1

我需要经由prepared statement执行大量inserts的到MySQL表对MySQL的客户机/服务器协议。如何做得更好?有没有只有一个办法做到这一点建立一个查询,像这样:是否MySQL的客户机/服务器协议支持批量插入

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

,并发送或可能MySQL客户端/服务器协议支持批量插入?我在mysql文档中找到了COM_STMT_SEND_LONG_DATA,但我不确定这是我需要的。

我看到Java示例:Java: Insert multiple rows into MySQL with PreparedStatement并有addBatch方法。这种方法只是建立一个insert请求与许多VALUES子句或它使用的是mysql协议的东西?

谢谢。

+1

[LOAD DATA LOCAL INFILE](https://dev.mysql.com/doc/refman/5.1/en/load-data.html)可能会有所帮助 – zedfoxus

回答

0

尝试是这样的:

INSERT INTO membersmemberIDCompanyNameLocation)值 (1, '李四', '匹兹堡'), (2, '简赛克斯',“纽约'), (3,'Bob Smith','Los Angeles');

2

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

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

如果什么我需要执行1K插入,10K插入? – 0xAX

+0

我认为这个限制是100万个插入,但是如果你想要更多的话可以改变。 –

+0

max_allowed_pa​​cket是对查询大小设置上限的变量。由于协议开销,实际查询限制会稍微减少。默认值是16M,你可以在客户端代码中用'''set max_allowed_pa​​cket = ''在每个连接的本地进行设置。 –

相关问题