Как сделать пакетную вставку в MySQL - PullRequest
119 голосов
/ 03 апреля 2011

У меня есть 1-много записей, которые нужно внести в таблицу.Каков наилучший способ сделать это в запросе?Должен ли я просто сделать цикл и вставить одну запись за итерацию?Или есть лучший способ?

Ответы [ 5 ]

264 голосов
/ 03 апреля 2011

Из руководства MySQL

INSERT операторы, которые используют VALUES Синтаксис может вставлять несколько строк. Сделать это, включить несколько списков столбцов значения, каждое из которых заключено в круглые скобки и разделенные запятыми. Пример:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
22 голосов
/ 31 мая 2012

В большинстве случаев вы не работаете в клиенте MySQL, и вам следует выполнять пакетную вставку вместе, используя соответствующий API.

Например, в JDBC:

connection con.setAutoCommit(false); 
PreparedStatement prepStmt = con.prepareStatement("UPDATE DEPT SET MGRNO=? WHERE DEPTNO=?");
prepStmt.setString(1,mgrnum1);                 
prepStmt.setString(2,deptnum1);
prepStmt.addBatch();

prepStmt.setString(1,mgrnum2);                        
prepStmt.setString(2,deptnum2);
prepStmt.addBatch();

int [] numUpdates=prepStmt.executeBatch();

http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/ad/tjvbtupd.htm

6 голосов
/ 05 января 2012
Insert into table(col1,col2) select col1,col2 from table_2;

Пожалуйста, перейдите на: http://dev.mysql.com/doc/refman/5.5/en/insert.html

5 голосов
/ 19 марта 2013

Загрузка данных в запросе на передачу данных гораздо лучше, но некоторые серверы, такие как godaddy, ограничивают эту опцию на общем хостинге, поэтому остается только два варианта, а затем вставлять запись на каждую итерацию или пакетную вставку, но пакетная вставка имеет ограничение символов, если ваш запрос превышает это количество символов, установленное в mysql, тогда ваш запрос завершится сбоем, поэтому я предлагаю вставить данные в чанки с помощью пакетной вставки, это сведет к минимуму количество соединений, установленных с базой данных. Удачи, ребята

3 голосов
/ 03 апреля 2011

mysql позволяет вставлять несколько строк одновременно ВСТАВИТЬ руководство

...