|
|
|
| Не подскажите, как мне написать скрипт, где устанавливалась бы целая система. Я создал БД с записями, зарезервировал её и теперь снёс. Резерв положил в файл kschool_base.sql. Как мне написать скрипт, чтобы он устанавливал эту систему через файл kschool_base.sql (файл весит 171 кбайтов запросов, где не очень хочется всё енто разрезать в php файл. Подскажите, плз! | |
|
|
|
|
|
|
|
для: BAHO
(04.12.2004 в 21:27)
| | Много ли в этом файле команд, расположенных на разных строках? Если дамп базы данных имеет такую структуру, что каждая команда SQL расположена в одной строке, скрипт по переброски его в базу займёт две строки. И в каком виде он сохранён - там полноценные SQL команды или только структура? Если последнее нужен кусочек файла. | |
|
|
|
|
|
|
|
для: cheops
(04.12.2004 в 21:34)
| | Ну к примеру:
CREATE TABLE 'ks_articles' (
'id' int(11) NOT NULL auto_increment,
'date' date default '0000-00-00',
'title' varchar(80) default '',
'resume' text,
'article' text,
PRIMARY KEY ('id')
);
INSERT INTO 'ks_articles' VALUES ('', '2004-11-28', 'Телестудия', 'В школе дейтсвует...', 'В школе...');
|
И так к каждой таблице, при этом кол-во строк больше 1 (тут только самый безобидный кусок кода) | |
|
|
|
|
|
|
|
|
для: BAHO
(05.12.2004 в 08:20)
| | Можно вот как поступить - сработает если только в текстовых полях нет точек с запятой...
<?php
$dblocation = "localhost";
$dbname = "ваша база";
$dbuser = "ваш логин";
$dbpasswd = "ваш пароль";
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbcnx)
{
exit( "<P>В настоящий момент сервер базы данных не доступен,
поэтому корректное отображение страницы невозможно.</P>" );
}
if (! @mysql_select_db($dbname,$dbcnx) )
{
exit( "<P>В настоящий момент база данных не доступна,
поэтому корректное отображение страницы невозможно.</P>" );
}
// имя файла с дампом базы данных
$filename = "kschool_base.sql";
// открываем его и читаем в буфер
$fp = fopen($filename);
$bufer = fread($fp,filesize($filename));
fclose($fp);
// Разбиваем содержимое файла по точке с запятой
$quer = explode(";", $bufer);
foreach($quer as $query)
{
if(!mysql_query($query)) exit(mysql_error());
}
?>
|
PS Если не заладится - пишите, может чего с регулярными выражениями придумаем... | |
|
|
|
|
|
|
|
для: cheops
(05.12.2004 в 12:53)
| | Появляется вот такая дрянь:
Warning: fopen() expects at least 2 parameters, 1 given in z:\home\kschool\www\install.php on line 23
Warning: fread(): supplied argument is not a valid stream resource in z:\home\kschool\www\install.php on line 24
Warning: fclose(): supplied argument is not a valid stream resource in z:\home\kschool\www\install.php on line 25
Query was empty | |
|
|
|
|
|
|
|
для: BAHO
(05.12.2004 в 15:39)
| | Хм... да, это я поторопился... следует использовать следующий скрипт
<?php
$dblocation = "localhost";
$dbname = "ваша база";
$dbuser = "ваш логин";
$dbpasswd = "ваш пароль";
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbcnx)
{
exit( "<P>В настоящий момент сервер базы данных не доступен,
поэтому корректное отображение страницы невозможно.</P>" );
}
if (! @mysql_select_db($dbname,$dbcnx) )
{
exit( "<P>В настоящий момент база данных не доступна,
поэтому корректное отображение страницы невозможно.</P>" );
}
// имя файла с дампом базы данных
$filename = "kschool_base.sql";
// открываем его и читаем в буфер
$fp = fopen($filename, "r");
$bufer = fread($fp,filesize($filename));
fclose($fp);
// Разбиваем содержимое файла по точке с запятой
$quer = explode(";", $bufer);
foreach($quer as $query)
{
if(!mysql_query($query)) exit(mysql_error());
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(05.12.2004 в 16:07)
| | а если всё же есть кавычки и их никак не замениить? | |
|
|
|
|
|
|
|
для: BAHO
(05.12.2004 в 16:44)
| | Хм... поправьте меня если ошибаюсь: Все SQL-запросы в дамп-файле заканчиваются подстракой вида ");" с последующим переводом строки. Если это так, то должен сработать следующий скрипт:
<?php
$dblocation = "localhost";
$dbname = "ваша база";
$dbuser = "ваш логин";
$dbpasswd = "ваш пароль";
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbcnx)
{
exit( "<P>В настоящий момент сервер базы данных не доступен,
поэтому корректное отображение страницы невозможно.</P>" );
}
if (! @mysql_select_db($dbname,$dbcnx) )
{
exit( "<P>В настоящий момент база данных не доступна,
поэтому корректное отображение страницы невозможно.</P>" );
}
// имя файла с дампом базы данных
$filename = "kschool_base.sql";
// открываем его и читаем в буфер
$fp = fopen($filename, "r");
$bufer = fread($fp,filesize($filename));
fclose($fp);
// Разбиваем содержимое файла по точке с запятой
$quer = preg_split("|\);\r\n|", $bufer);
// Выполняем SQL-запросы
foreach($quer as $query)
{
if(!mysql_query($query.")")) exit(mysql_error());
}
?>
|
PS В Windows перевод строки осуществляется двумя символами: возврат каретки и перевод строки - \r\n, в UNIX - просто переводом строки \n. Может быть разница в зависимости от того, где сформирован дамп-файл. | |
|
|
|
|
|
|
|
для: cheops
(05.12.2004 в 17:01)
| | Точно такой же вопрос. Решил воспользоваться вашим скриптом и возникла проблема, ответ даже не придумаю.
if($REQUEST_METHOD=="POST")
{
$query = $_POST['query'];
$plural_query = $_POST['plural_query'];
/*if(tep_db_query(stripslashes($query)))
{
echo "Your SQL-query has been executed successfully";
}*/
//downloads($plural_query);
//$filename = "kschool_base.sql";
$fp = fopen($plural_query, "rb");
$bufer = fread($fp,filesize($plural_query));
fclose($fp);
$quer = preg_split("|\);\r\n|", $bufer);
foreach($quer as $query)
{
if(!mysql_query($query.")")) exit(mysql_error());
}
}
|
Warning: fopen(db_loaded-20050401212648.sql): failed to open stream: No such file or directory in /var/www/html/test_p/backup_temp.php on line 15
Warning: filesize(): Stat failed for db_loaded-20050401212648.sql (errno=2 - No such file or directory) in /var/www/html/test_p/backup_temp.php on line 16
Warning: fread(): supplied argument is not a valid stream resource in /var/www/html/test_p/backup_temp.php on line 16
Warning: fclose(): supplied argument is not a valid stream resource in /var/www/html/test_p/backup_temp.php on line 17
You have an error in your SQL syntax near ')' at line 1
Строки 14 и 15:
$bufer = fread($fp,filesize($filename));
fclose($fp);
|
| |
|
|
|
|
|
|
|
для: Денис
(13.09.2005 в 15:19)
| | спасибо, ответ нашел сам | |
|
|
|
|
|
|
|
для: Денис
(13.09.2005 в 15:19)
| | Извините за крайнюю настойчивость, но мне очень нужна ваша помощь.
Я пытаюсь загрузить файл с рашрирением .sql, считать его и выполнить записанные в нем команды, но дальше чем fopen не могу уйти - файл не находит. Не знаю, в чем причина, уже кажется, все перепробовал. Вот скрипт функции:
function downloads ($plural_query)
{
$extension = substr($plural_query, -3);
if ( ($extension == 'zip') || ($extension == '.gz') || ($extension == 'sql') )
{
if ($fp = fopen($plural_query, 'rb'))
{
$buffer = fread($fp, filesize($plural_query));
fclose($fp);
}
else
{
echo "Error: Not open file";
}
}
else
{
echo "Error: Download link not acceptable";
}
}
|
Повторяю,хотя бы просто найти и открыть файл - и это не выполняется.
Возможно, вы знаете, как это делает phpMyAdmin? | |
|
|
|
|
|
|
|
для: Денис
(13.09.2005 в 16:53)
| | Хм... новые вопросы, лучше обсуждать в новой теме.
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=7380 | |
|
|
|