PHP を使用して SQL データベースをバックアップする方法を教えてください。
ANSI SQL に準拠した、ベンダーに依存しない方法はありますか?
そうでない場合は、データベース ベンダーごとにその方法をリストできますか?
すべてのデータベース システムには、その内容をダンプするためのプログラムが付属しています。
system()
またはを使用して、PHP からそのプログラムを簡単に呼び出すことができますshell_exec()
。
たとえば、Ident 認証を有効にして PostgreSQL を使用していて、データベースを直接 SQL テキストとしてブラウザにダンプしたい場合は、次test
のように簡単です。
<?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');
?>
コマンドライン引数としてパスワードを送信することは非常に安全ではないためです。
私はphpmybackupproが大好きです
「ANSISQLに準拠した」データベースのバックアップは可能であり、称賛に値しますが、それでも移植性の問題が発生します。最も明白なのは、MySQLのダンプ/復元形式はかなり高速ですが、主にSQLの非標準拡張機能を使用してこれを実現していることです。したがって、ダンプをPostGresqlに渡すことはできません。それは機能しません。実際、PostGresqlは大量のINSERTステートメントの処理も非常に遅いです。ネイティブダンプ形式は、大量のデータを一度に挿入するために最適化された独自のカスタムSQLステートメントを使用します。
それはかなり複雑なプロセスです。phpmyadmin などを使用することをお勧めします。