Показать сообщение отдельно

  #140  
Старый 30.07.2007, 11:32
Аватар для gibson
gibson
Moderator - Level 7
Регистрация: 24.02.2006
Сообщений: 447
Провел на форуме:
2872049

Репутация: 705
Отправить сообщение для gibson с помощью ICQ
По умолчанию

Недавно чел спрашивал как востановить базу, не одно из перечисленных средсв не подошло. С помощью этого скрипта можно читать sql-файл построчно, точнее по командно, предворительно залив его через фтп:
PHP код:
<?php 
// подключаемся к бд
mysql_connect("localhost""login""password"); 
mysql_select_db ("database"); 
// 
if (!file_exists($fname)) die ("Файл $fname не существует!"); 
$fp fopen ($fname"r"); 
$buffer fread($fpfilesize($fname)); 
fclose ($fp); 

$prev 0

while (
$next strpos($buffer,";",$prev+1)) 

$i++; 
$a substr($buffer,$prev+1,$next-$prev); 
mysql_query($a); 
$prev $next


echo 
"Выполнено $i команд"

?>
$fname - имя файла sql-дампа
$prev - позиция предыдущей ";"
$next - позиция следующей ";" начиная с позиции $prev

Вызываем скрипт примерно так: sqlbackup.php?fname=backup.sql, будет выполнен файл backup.sql. В конце выводится число выполненных команд.

Минусы
Занимает большое количество ресурсов сервера, весь файл читается в память. Можно усовершенствовать, читая из файлового только отдельные sql-команды.
 
Ответить с цитированием