Пакетное добавление записей в MySQL

Здравствуйте, как можно добавить несколько десятков записей за один раз? Допустим, мне нужно добавить в одно поле несколько записей. Я знаю, что можно добавить несколько значений таким образом: INSERT INTO tablename (name) VALUES (1),(2),(3)...; Но не вставлять же мне вручную названия значений, тем более когда у меня их более 100 записей. Собственно, как добавить в таком случае записи?

1 ответов


>>> Но не вставлять же мне вручную названия значений

А откуда у вас эти значения беруться? Если это какой-то массив, то перебирая его генерируйте запрос.



$arr = array(1,2,55,73,44,18,768,90,52,8,40);
$query = "INSERT INTO `table_name` (`field_name`) VALUES ";
foreach($arr as $val){
  $query .= "('$val'),";
}
$query = substr($query,0,-1);
echo $query;

// На выходе получаем:
// INSERT INTO `table_name` (`field_name`) VALUES ('1'),('2'),('55'),('73'),('44'),('18'),('768'),('90'),('52'),('8'),('40')

// Теперь запускаем
mysql_query($query);
 

Я в большинстве таких случаев прибегаю к Excel для генерации запросов (банально столбец со значениями, а справа столбец с тектовым запросом со ссылкой на значение), или просто заменяю окончания строки на свою фразу, где описаны конец запроса, перевод строки, начало запроса.
Часто такой пакетный файл создать проще чем изобретать велосипеды, или подгонять под стандарты импорта.
Получившейся файл смело пуляю в mysql.


Вот вам запрос. Измените её как хотите.


INSERT INTO `mytable` (`name`, `age`) VALUES ('Andrey', '43'), ('Katya', '22')
 
Надо значение разделить запятой.