Как сделать резервную копию базы данных SQL с помощью PHP? - PullRequest
10 голосов
/ 02 ноября 2008

Как сделать резервную копию базы данных SQL с помощью PHP.

Есть ли независимый от поставщика способ сделать это, соответствующий ANSI SQL?

Если нет, то можете ли вы перечислить, как это сделать для каждого из поставщиков баз данных?

Ответы [ 4 ]

6 голосов
/ 02 ноября 2008

Каждая система баз данных поставляется с некоторой программой для выгрузки ее содержимого.

Вы можете просто вызвать эту программу из PHP, используя system() или shell_exec().

Например, если вы используете PostgreSQL с включенной Идентификационной аутентификацией и хотите выгрузить базу данных test напрямую как текст SQL в браузер, это так просто: <?php header('Content-type: text/plain'); system('pg_dump test'); ?>

При использовании MySQL с пользователем базы данных и паролем, хранящимся в ~/.my.cnf, это также очень просто: <?php header('Content-type: text/plain'); system('mysqldump test'); ?>

Однако, не делайте этого: <?php header('Content-type: text/plain'); system('mysqldump -utestuser -p<b>testpassword</b> test'); ?> потому что передача пароля в качестве аргумента командной строки очень небезопасно .

1 голос
/ 02 ноября 2008

Я люблю phpmybackuppro

0 голосов
/ 03 ноября 2008

Хотя резервное копирование базы данных, «соответствующей ANSI SQL», возможно и достойно восхищения, вы все равно столкнетесь с проблемами переносимости. Наиболее очевидным является то, что, хотя формат дампа / восстановления MySQL довольно быстрый, он достигает этого, главным образом, с помощью нестандартного расширения SQL. Так что вы не можете просто передать дамп в PostGresql: он не будет работать. На самом деле PostGresql также довольно медленно обрабатывает огромное количество операторов INSERT. В его собственном формате дампа используется собственный оператор SQL, оптимизированный для одновременной вставки большого количества данных.

0 голосов
/ 02 ноября 2008

Это довольно сложный процесс. Я рекомендую вам использовать phpmyadmin или аналогичный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...