Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не хватает памяти!!!!
 
 автор: technic611   (16.12.2006 в 06:03)   письмо автору
 
 


<? 


  
  
// Помещаем содержимое файла в массив $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 в 08:05)   письмо автору
 
   для: 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=''
}
}   

?> 

Кому не хватает памяти делайте так. Работает!!!!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования