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

  #140  
Старый 30.07.2007, 11:32
gibson
Постоянный
Регистрация: 24.02.2006
Сообщений: 447
С нами: 10636106

Репутация: 705
По умолчанию

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