
30.07.2007, 11:32
|
|
Moderator - Level 7
Регистрация: 24.02.2006
Сообщений: 447
Провел на форуме: 2872049
Репутация:
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-команды.
|
|
|