У меня есть 1-много записей, которые нужно ввести в таблицу. Каков наилучший способ сделать это в запросе? Должен ли я просто создать цикл и вставить одну запись за итерацию? Или есть лучший способ?
Как сделать пакетную вставку в MySQL
Ответ 1
Из руководства MySQL
Операторы INSERT, использующие VALUES синтаксис может вставлять несколько строк. Делать это, включают в себя несколько списков столбцов значения, каждый из которых заключен внутри круглые скобки и разделенные запятыми. Пример:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
Ответ 2
В большинстве случаев вы не работаете в клиенте 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();
Ответ 3
Insert into table(col1,col2) select col1,col2 from table_2;
Перейдите по адресу: http://dev.mysql.com/doc/refman/5.5/en/insert.html
Ответ 4
Загружать данные infile-запроса намного лучше, но некоторые серверы, такие как godaddy, ограничивают эту опцию на общем хостинге, поэтому осталось только две опции, а затем одна запись вставки на каждой итерации или вставке в пакет, но вставка в пакет имеет свою ограниченность символов, если ваш запрос превышает это количество символов, заданных в mysql, тогда ваш запрос будет разбит, поэтому я предлагаю вставлять данные в куски с пакетной вставкой, это минимизирует количество соединений, установленных с помощью database.best из удачливых парней.
Ответ 5
mysql позволяет вставлять сразу несколько строк Руководство INSERT