[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Парсинг большого CVS с записью в базу MySQL
Страницы: 1, 2
shurikkan
Здравствуйте, товарищи.

Выполняю парсинг файла формата CSV и запись инфы из него в БД MySQL.

Использую встроенную функцию fgetcsv.
$rows = array();
$link = fopen(CSV_MAIN, "r");
while ($data = fgetcsv($link, 0, ';', '"') ) {
$rows[] = $data;
}
fclose($link);


Собираю в цикле запрос (что когда-то ещё Игорь_Vasinsky советовал user posted image )
$query = "INSERT INTO table_name (
field_1,
field_2,
field_n
) VALUES"
;

$rowsNum = count($rows);
for($i = 0; $i < $rowsNum; $i++) {
$query .= "(
field_1_val,
field_2_val,
field_n_val
)"
;
if($i == $rowsNum - 1) {
$query .= ";";
} else {
$query .= ",";
}
}


По окончанию склейки строка запроса весит около 4МБ (в CSV более 19000 строк).
Отправляю его серверу БД и получаю "Allowed memory size ...".

Хотел узнать как вообще по-феншую делается парсинг больших файлов с переносом содержимого в БД MySQL?

Заранее спасибо за ответы!

P.S.: Приятель предложил разбить запрос на части и отправлять по 50-100 строк (внутри цикла - if($i%50) {отправка}). Второй вариант с транзакциями, но это, по-моему, уже какое-то извращение.

_____________
Русскоязычная поддержка Joomla! CMS
Joomla-Support.ru :: user Shurikkan
Skype: Shurikkan
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.