10

我如何使用 PHP 备份 SQL 数据库。

是否有符合 ANSI SQL 的与供应商无关的方法来执行此操作?

如果不是,也许您可​​以列出如何为每个数据库供应商做这件事?

4

4 回答 4

6

每个数据库系统都带有一些用于转储其内容的程序。

system() 您可以使用或简单地从 PHP 调用该程序shell_exec()

例如,如果您使用启用了Ident 身份验证的 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 -ptestpassword test');
?>
因为将密码作为命令行参数传输是非常不安全的。

于 2008-11-02T14:09:29.433 回答
1

我爱phpmybackuppro

于 2008-11-02T14:23:44.990 回答
0

这是一个相当复杂的过程。我建议你使用 phpmyadmin 或类似的。

于 2008-11-02T14:35:18.490 回答
0

虽然备份“符合 ANSI SQL”的数据库是可能的并且令人钦佩,但您仍然会遇到可移植性问题。最明显的是,虽然 MySQL 的转储/恢复格式相当快,但它主要通过使用 SQL 的非标准扩展来实现这一点。所以你不能只把转储交给 PostGresql:它不起作用。事实上,PostGresql 在处理大量 INSERT 语句时也很慢。它的原生转储格式使用它自己的自定义 SQL 语句,该语句针对一次插入大量数据进行了优化。

于 2008-11-03T00:52:16.373 回答