Тут правильно говорят про LOAD DATA INFILE 'xxx' INTO TABLE 'xxx', только одна оговорка -- файл должен быть локальным по отношению к mysql-серверу.
У меня была задача сгенерировать 80 млн записей 4кб текста (вырезанного из 100 Кб шаблонного текста).
Я в своё время сделал так (т.к. php и mysql работал на одной машине):
1. Сделал RAM-диск, и примонтировал его к ФС.
2. На этот рам диск я писал нужные мне данные в CSV объемом где то 1 гб
3. Загружал в mysql с помощью LOAD DATA ...
Как показывали расчеты, если бы я это делал с помощью INSERT INTO то это продолжалось бы в районе 11 часов. Используя LOAD DATA я уложился в 40 мин. Причем сам по себе экспорт данных 1 Гб в mysql занимал порядка 10 сек, время генерации 1Гб файлика на php составляло порядка 3 минут, отсюда выводы --- берите LOAD DATA ... и готовьте с помощью него, вещь годная.