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

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

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

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

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

Если не сложно, уточните как можно этой командой создать дамп, например у меня БД называется primer и там 30 таблиц, как именно записать эту команду, чтобы все таблицы оказались в дампе (без указания имен таблиц это можно?)
...
Рейтинг: 0 / 0
(PHP) Как создать дамп Mysql средствами PHP?
    #35225092
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сначала с помощью SHOW TABLES получите список таблиц в базе, а потом в цикле делайте SELECT * FROM имяТаблицы INTO ...
...
Рейтинг: 0 / 0
(PHP) Как создать дамп Mysql средствами PHP?
    #35226363
evgenijj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
(PHP) Как создать дамп Mysql средствами PHP?
    #35226629
armix2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
(PHP) Как создать дамп Mysql средствами PHP?
    #35226753
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
(PHP) Как создать дамп Mysql средствами PHP?
    #35227448
armix2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
(PHP) Как создать дамп Mysql средствами PHP?
    #35227512
Бурляев Вячеслав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чуть выше есть вполне рабочий скрипт создания дампа
Воспользуйтесь им
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
(PHP) Как создать дамп Mysql средствами PHP?
    #38032984
lsdx11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, 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
11 сообщений из 11, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Как создать дамп Mysql средствами PHP?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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