如何使用PHP备份SQL数据库。
是否有与供应商无关的方法来执行符合ANSI SQL的方法?
如果不是,您可以列出如何为每个数据库供应商执行此操作?
答案 0 :(得分:6)
每个数据库系统都附带一些转储其内容的程序。
您可以使用system()
从PHP调用该程序
或shell_exec()
。
例如,如果您将PostgreSQL与启用的Ident authentication一起使用,并希望将数据库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');
?>
因为作为命令行参数传输密码是very insecure。
答案 1 :(得分:1)
答案 2 :(得分:0)
这是一个非常复杂的过程。我建议你使用phpmyadmin或类似的。
答案 3 :(得分:0)
虽然备份数据库“符合ANSI SQL”是可能且令人钦佩的,但您仍会遇到可移植性问题。最明显的是,虽然MySQL的转储/恢复格式相当快,但它主要通过使用SQL的非标准扩展来实现这一点。所以你不能把转储交给PostGresql:它不会工作。实际上,PostGresql在处理大量INSERT语句时也很慢。它的本机转储格式使用它自己的自定义SQL语句,该语句被优化用于一次插入大量数据。