как вставить много похожих записей в mysql за раз?

мы знаем, что мы можем вставлять сразу несколько записей, используя этот запрос:

INSERT INTO `TABLE1` (`First`,`Last`) VALUES ('name1','surname1'), ('name2','surname2'), ('name3','surname3'), ('name4','surname4'); 

но что, если мы хотим добавить 1000 подобных записей, как указано выше (name*,surname*) , нужно ли записывать все записи или мы можем использовать что-то вроде шаблона? или существует ли какое-либо другое решение с использованием mysql (phpmyadmin)?

Нет, вы можете делать только эти типы вставок:

 INSERT INTO table (artist, album, track, length) VALUES ("$artist", "$album", "$track1", "$length1"), ("$artist", "$album", "$track2", "$length2"), ("$artist", "$album", "$track3", "$length3"), ("$artist", "$album", "$track4", "$length4"), ("$artist", "$album", "$track5", "$length5"); 

Но вы всегда можете написать сценарий, который будет генерировать выше, используя любые регулярные выражения, которые вы хотите. Тогда скрипт будет отвечать за расширение регулярных выражений в соответствующее выше INSERT ... , а затем запустите его.

Оператор REGEXP

Вы можете попытаться генерировать ваши шаблоны раньше времени или как часть содержимого команде VALUES используя REGEXP .

Вы можете часто использовать его в WHERE следующим образом:

 SELECT col1, col2, ..., coln FROM products WHERE sku REGEXP '^[A-Za-z]{2,4}-[0-9]{3}-[0-9]{2}$' 

Вы можете больше узнать об этом операторе на веб-сайте MySQL в документах REGEXP , но я никогда не видел, чтобы он использовался таким образом и никогда не думал, что он сам это сделает. Я нашел команду, упомянутую в этом SO Q & A под названием « Адаптация регулярного выражения для работы с MySQL» .

Рекомендации

  • 8.3.2.1. Скорость заявлений INSERT
  • Несколько операторов mysql INSERT в одном запросе php
  • Вставка нескольких записей в MySQL с одним запросом

Как утверждают другие ответы, вы не можете, но если вы используете PHP + PDO и подготовленные операторы , вы можете повторно использовать свой оператор несколькими различными параметрами, в то время как машина делает кеш вашего оператора для оптимизации всего процесса. Не говоря уже о том, что он позаботится о том, как это происходит. Код может выглядеть примерно так (PHP):

 $DBH = new PDO("mysql:dbname=pdo;host=localhost", "username", "password" ); $DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $STMT = $DBH->prepare("INSERT INTO `table` (`col1`, `col2`) VALUES (?,?)"); // Let's say $array is an array of 1000+ different elements foreach ($array as $value) { $STMT->bindParam(1, $value); // You just need to bind the params and execute $STMT->bindParam(2, $value); // the statement for every record. $STMT->execute(); } $DBH = NULL; 

Кроме того, я предлагаю вам использовать Adminer , это интерфейс чище, и он проще для mantain / update (это всего лишь один файл PHP со всем приложением). Не говоря уже о том, что phpmyadmin больше не разрабатывается (администратор – настоящее и будущее phpmyadmin).