|
|
|
|
<?
// Помещаем содержимое файла в массив $arr
// Одна строка файла - один элемент массива
$arr = file("files/dump.csv");
// В цикле производим разбор каждой строки
// формируем многострочный INSERT-запрос
$sql = "INSERT INTO таблица VALUES ";
foreach($arr as $line)
{
// Разбиваем строку по запятой
$number = explode(";",$line);
$number = str_replace(" ", "",$number);
$order = "(NULL,";
foreach($number as $num)
{
$order .= "'$num',";
}
// Удаляем последнюю лишнюю запятую и
// добавляем закрывающую скобку
$order = substr($order,0,strlen($order) - 5)."')";
$sql .= "$order,";
}
// Удаляем последнюю лишнюю запятую и
// добавляем закрывающую скобку
$sql = substr($sql,0,strlen($sql) - 1);
// Выполняем SQL-запрос
echo $sql;
mysql_query("$sql");
?>
|
Получается слишком большой запрос на 28000 записей. На его выполнение не достаточно памяти
Как его можно по частям загрузить в базу | |
|
|
|
|
|
|
|
для: technic611
(16.12.2006 в 06:03)
| | все разобрался изменил код так
<?
$arr = file("uss.csv");
$k=0; $max=1000;
foreach($arr as $line)
{
// Разбиваем строку по запятой
$number = explode(";",$line);
$number = str_replace(" ", "",$number);
$order = "(NULL,";
foreach($number as $num)
{
$order .= "'$num',";
}
// Удаляем последнюю лишнюю запятую и
// добавляем закрывающую скобку
$order = substr($order,0,strlen($order) - 5)."')";
$sql .= "$order,";
$k++;
if($k>$max){
// Удаляем последнюю лишнюю запятую и
// добавляем закрывающую скобку
$sql = substr($sql,0,strlen($sql) - 1);
mysql_query("INSERT INTO таблицаVALUES $sql");
$k=0;
$sql='';
}
}
?>
|
Кому не хватает памяти делайте так. Работает!!!! | |
|
|
|