2015-06-11 48 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 = ''在每個連接的本地進行設置。 –

相關問題