Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Как создать дамп Mysql средствами PHP? / 11 сообщений из 11, страница 1 из 1
31.03.2008, 12:53
    #35224179
armix2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Как создать дамп Mysql средствами PHP?
(PHP) Как создать дамп Mysql средствами PHP?

Т.е без обращения к mysqldump, это вообще реально?
...
Рейтинг: 0 / 0
31.03.2008, 13:10
    #35224233
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Как создать дамп Mysql средствами PHP?
...
Рейтинг: 0 / 0
31.03.2008, 13:32
    #35224298
van4ous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Как создать дамп Mysql средствами PHP?
armix2000(PHP) Как создать дамп Mysql средствами PHP?

Т.е без обращения к mysqldump, это вообще реально?

вот эта утилитка самое лучшее средство по созданию и загрузке дампов любых размеров :-)

только ей и пользуюсь
...
Рейтинг: 0 / 0
31.03.2008, 16:09
    #35224961
armix2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Как создать дамп Mysql средствами PHP?
Kachalov SELECT ... INTO DUMPFILE 'file_name'

Если не сложно, уточните как можно этой командой создать дамп, например у меня БД называется primer и там 30 таблиц, как именно записать эту команду, чтобы все таблицы оказались в дампе (без указания имен таблиц это можно?)
...
Рейтинг: 0 / 0
31.03.2008, 16:39
    #35225092
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Как создать дамп Mysql средствами PHP?
Сначала с помощью SHOW TABLES получите список таблиц в базе, а потом в цикле делайте SELECT * FROM имяТаблицы INTO ...
...
Рейтинг: 0 / 0
01.04.2008, 10:12
    #35226363
evgenijj
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Как создать дамп Mysql средствами PHP?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
<?php

$host = "localhost";  // имя сервера   
$user = "root";       // имя пользователя
$password = "";       // пароль
$db_name = "mydb";    // имя базы данных
$dump_dir = "./dump"; // директория, куда будем сохранять резервную копию БД

$link = mysql_connect($host, $user, $password) or die( "Сервер базы данных не доступен" );
$db = mysql_select_db($db_name) or die( "База данных не доступна" );
$tables = "SHOW TABLES";
$res = mysql_query($tables) or die( "Ошибка при выполнении запроса: ".mysql_error() );
while( $table = mysql_fetch_row($res) )
{
    $fp = fopen( $dump_dir."/".$table[ 0 ].".sql", "a" );
    if ( $fp )
    {
        $query = "TRUNCATE TABLE `".$table[ 0 ]."`;\n";
        fwrite ($fp, $query);
        $rows = 'SELECT * FROM `'.$table[ 0 ].'`';
        $r = mysql_query($rows) or die("Ошибка при выполнении запроса: ".mysql_error());
        while( $row = mysql_fetch_row($r) )
        {
            $query = "";
            foreach ( $row as $field )
            {
                if ( is_null($field) )
                    $field = "NULL";
                else
                    $field = "'".mysql_escape_string( $field )."'";
                if ( $query == "" )
                    $query = $field;
                else
                    $query = $query.', '.$field;
            }
            $query = "INSERT INTO `".$table[ 0 ]."` VALUES (".$query.");\n";
            fwrite ($fp, $query);
        }
        fclose ($fp);
    }
}
 
?>
...
Рейтинг: 0 / 0
01.04.2008, 11:29
    #35226629
armix2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Как создать дамп Mysql средствами PHP?
KachalovСначала с помощью SHOW TABLES получите список таблиц в базе, а потом в цикле делайте SELECT * FROM имяТаблицы INTO ...


Записал команду так

SELECT * FROM s_ru_content INTO OUTFILE '/home2/wen/public_html/www/s.ru/tmp/mysql.sql'
SELECT * FROM s_ru_content INTO DUMPFILE '/home2/wen/public_html/www/s.ru/tmp/mysql.sql'


НЕ работает!

Дамп в указанной папке не создается, почему?
...
Рейтинг: 0 / 0
01.04.2008, 11:57
    #35226753
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Как создать дамп Mysql средствами PHP?
armix2000Дамп в указанной папке не создается, почему?
причины могут быть разными (например не хватает прав), но конкретно по приведенному SQL-запросу - для многострочных результатов надо указывать вид разделителя строк (также неплохо указывать вид разделителя столбцов):

Код: plaintext
SELECT * FROM s_ru_content INTO OUTFILE '/home2/wen/public_html/www/s.ru/tmp/mysql.sql' LINES TERMINATED BY '\n'
...
Рейтинг: 0 / 0
01.04.2008, 14:49
    #35227448
armix2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Как создать дамп Mysql средствами PHP?
Kachalov armix2000Дамп в указанной папке не создается, почему?
причины могут быть разными (например не хватает прав), но конкретно по приведенному SQL-запросу - для многострочных результатов надо указывать вид разделителя строк (также неплохо указывать вид разделителя столбцов):

Код: plaintext
SELECT * FROM s_ru_content INTO OUTFILE '/home2/wen/public_html/www/s.ru/tmp/mysql.sql' LINES TERMINATED BY '\n'


разделитель указывал - все равно не работает!
...
Рейтинг: 0 / 0
01.04.2008, 15:10
    #35227512
Бурляев Вячеслав
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Как создать дамп Mysql средствами PHP?
Чуть выше есть вполне рабочий скрипт создания дампа
Воспользуйтесь им
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
10.11.2012, 17:41
    #38032984
lsdx11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Как создать дамп Mysql средствами PHP?
Спасибо, evgenijj!
Немного доработал, теперь умеет разбивать insert на несколько запросов, добавляет запросы на создание таблиц, сохраняет файл на сервере, или отдает браузеру, может жать дамп в gzip.
Пользуемся на здоровье!
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
<?
$bd_host='localhost';
$bd_user='root';
$bd_pass='';
$bd_name='mydb';
$dump_dir = "temp"; // директория, куда будем сохранять резервную копию БД
$dump_name = "dump.sql"; //имя файла
$insert_records = 50; //записей в одном INSERT
$gzip = true; 		//упаковать файл дампа
$stream = true;		//вывод файла в поток

$link = mysql_connect($bd_host, $bd_user, $bd_pass) or die( "Сервер базы данных не доступен" );
$db = mysql_select_db($bd_name) or die( "База данных не доступна" );
$res = mysql_query("SHOW TABLES") or die( "Ошибка при выполнении запроса: ".mysql_error() );
$fp = fopen( $dump_dir."/".$dump_name, "w" );
while( $table = mysql_fetch_row($res) )
{
$query="";
    if ($fp)
    {
		$res1 = mysql_query("SHOW CREATE TABLE ".$table[0]);
		$row1=mysql_fetch_row($res1);
		$query="\nDROP TABLE IF EXISTS `".$table[0]."`;\n".$row1[1].";\n";
        fwrite($fp, $query); $query="";
        $r_ins = mysql_query('SELECT * FROM `'.$table[0].'`') or die("Ошибка при выполнении запроса: ".mysql_error());
		if(mysql_num_rows($r_ins)>0){
		$query_ins = "\nINSERT INTO `".$table[0]."` VALUES ";
		fwrite($fp, $query_ins);
		$i=1;
        while( $row = mysql_fetch_row($r_ins) )
        { $query="";
            foreach ( $row as $field )
            {
                if ( is_null($field) )$field = "NULL";
                else $field = "'".mysql_escape_string( $field )."'";
                if ( $query == "" ) $query = $field;
                else $query = $query.', '.$field;
            }
			if($i>$insert_records){
							$query_ins = ";\nINSERT INTO `".$table[0]."` VALUES ";
							fwrite($fp, $query_ins);
							$i=1;
							}
            if($i==1){$q="(".$query.")";}else $q=",(".$query.")";
			fwrite($fp, $q); $i++;
        }
        fwrite($fp, ";\n");
	}
    }
} fclose ($fp);

if($gzip||$stream){ $data=file_get_contents($dump_dir."/".$dump_name);
$ofdot="";
if($gzip){
	$data = gzencode($data, 9);
	unlink($dump_dir."/".$dump_name);
	$ofdot=".gz";
}

if($stream){
		header('Content-Disposition: attachment; filename='.$dump_name.$ofdot);
		if($gzip) header('Content-type: application/x-gzip'); else header('Content-type: text/plain');
		header("Expires: 0");
		header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
		header("Pragma: public");
		echo $data;
}else{
		$fp = fopen($dump_dir."/".$dump_name.$ofdot, "w");
		fwrite($fp, $data);
		fclose($fp);
	}
}
 ?>
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Как создать дамп Mysql средствами PHP? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]