Как сделать резервную копию таблицы MySQL в дамп с помощью PHP? - PullRequest
0 голосов
/ 25 января 2012

Есть ли способ выгрузить всю базу данных, используя php , но не в CSV или XML , потому что мне это нужно в формате чистого SQL.

Пример нужного мне дампа:

CREATE TABLE 'table_name' etc..;
INSERT INTO 'table_name' (field, field2) VALUES ('1','2');
INSERT INTO 'table_name' (field, field2) VALUES ('1','2');

У меня нет использования exec () или system (). И без создания оператора INSERT вручную. Пример:

while($row = mysql_results) {
 $sql_dump = 'INSERT INTO ...';
}

Спасибо!:)

Ответы [ 3 ]

1 голос
/ 25 января 2012

Вы можете запустить запрос SHOW CREATE TABLE.Это делается из клиента mysql:

+-------+----------------------------------------------------------------+
| Table | Create Table                                                   |
+-------+----------------------------------------------------------------+
| test2 | CREATE TABLE `test2` (
  `AAA` varchar(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+----------------------------------------------------------------+

Данные, конечно, можно получить с помощью любого обычного оператора select, и если вы делаете это с помощью языка сценариев, вы можете хранить данные так, как вам нужно.

Если вы просто находитесь в клиенте mysql и имеете доступ к файловой системе, вы можете выполнить инструкцию Select ... Into Outfile:

SELECT * INTO OUTFILE 'backup.tab'
ENCLOSED BY '"'
FROM <TableName>;

Приведенное выше создаст разделенную вкладкуfile.

Чтобы загрузить данные обратно во время выполнения:

LOAD DATA INFILE 'backup.tab'
INTO TABLE <TableName>
ENCLOSED BY '"';

Попытка воссоздать операторы INSERT из MySQL, скорее всего, приведет к проблемам с экранированием специальных символов и тому подобным.Использование файлов данных, разделенных CSV или Tab, считается совершенно стандартным для экспорта и импорта данных.

0 голосов
/ 01 февраля 2012

Попробуйте что-то вроде этого

$command="mysqldump  --host=localhost --user=USER --password=***** DATABASENAME.table > db.sql";
system($command);
0 голосов
/ 25 января 2012

Если у вас есть удаленный доступ к базе данных (порт MySQL не ssh), вы можете попытаться настроить синхронизацию между серверами.Вы можете использовать другой сервер, где у вас есть открытый или требуемый доступ.достаточно установки на localhost.
В последних версиях PHPMyAdmin предусмотрена функция настройки синхронизации (установите ее на локальном компьютере).Также SQLYog поддерживает функцию синхронизации.

...