[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Заливка информации из файла в MySQL
feritailor
При заливке немаленького файла в MySQL таблицу (размер csv файла 11 Мб) пхп ругается следующим образом: "Fatal error: Maximum execution time of 60 seconds exceeded in 2.php on line 37"
и соответственно выполнение скрипта прекращается.

каким образом избежать данной ситуации???
как уменьшить нагрузку на MySQL??
Как еще можно залить (mysql> LOAD DATA LOCAL INFILE "pet.txt" INTO TABLE pet; - не предлагать - работает быстрее, но есть ограничения по размеру файла).

а вот и сам скрипт:

PHP
<?php

$link
=mysql_connect("localhost""user""pass")  or die("Could not connect to MySQL server!");
@
mysql_select_db("base"$link) or die("Could not select base database!");
$result mysql_query("DELETE FROM table");
$row 1;
$fp fopen ("file.csv""r");
while (
$data fgetcsv ($fp1000";")) {
    
$num count ($data);
    
$ID=$row;
    
$code=$data[1];
    
$scode=$data[1];
    
$name=$data[3];
    
$Fulname=$data[3];
    
$tm=$data[4];
    
$perens=$data[0];
    
$query ="INSERT INTO `products` (`ID`, `code`, `scode`, `Name`, `Fulname`, `tm`, `f1`, `f2`, `f3`, `f4`, `f5`)
 VALUES ('$ID', '$code', '$scode', '$name', '$Fulname', '$tm', '$perens', 'і', 'і', 'і', 'і');"
;
    
$result mysql_query($query);
    
$row++;
}
fclose ($fp);




Спустя 1 час, 29 минут, 50 секунд (25.12.2008 - 19:22) kirik написал(а):
Можно воспользоваться дампером, предварительно воссоздав подобную базу локально (убрать лимиты).

Еще можно попробовать собирать это через запятую
SQL
('$ID', '$code', '$scode', '$name', '$Fulname', '$tm', '$perens', 'і', 'і', 'і', 'і')

и потом делать один инсерт запрос. Но не факт, что на этот раз MySQL не сругается. Иначе - придется разбивать на запросы по 1000 строчек в запросе, например.

Спустя 15 часов, 27 минут, 54 секунды (26.12.2008 - 10:49) sergeiss написал(а):
Еще можно установить побольше максимальное время выполнения скрипта. В файле php.ini и/или специальной функцией в начале выполнения скрипта.

И второй момент - почему бы не заливать через файл? Ну есть ограничения на размер заливаемого файла, черт с ними! Делай несколько файлов.

Спустя 2 часа, 14 минут, 55 секунд (26.12.2008 - 13:04) feritailor написал(а):
Цитата (sergeiss @ 26.12.2008 - 07:49)
Еще можно установить побольше максимальное время выполнения скрипта. В файле php.ini и/или специальной функцией в начале выполнения скрипта.

И второй момент - почему бы не заливать через файл? Ну есть ограничения на размер заливаемого файла, черт с ними! Делай несколько файлов.

По поводу специальной функции пожалуйста по подробнее

Спустя 28 минут, 16 секунд (26.12.2008 - 13:33) Alchemist написал(а):
Быстрый ответ:

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