2012-01-25 6 views
0

PHP を使用してデータベース全体をダンプする方法はありますか?純粋なSQL形式であるため、CSVまたはXMLには適用できません。ダンプのMySQLテーブルをPHPのダンプにバックアップするには?

例Iは、必要があります。

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

私はのexec()またはシステム()の使用法を持っていません。 、手動でINSERT文を作成せずに... 例:

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

ありがとうございます! :)

+0

のようなものを試してみては私のこの質問を参照してください。あなたはここで話題にはなりません。 http://webmasters.stackexchange.com/questions/24260/how-can-i-automate-retrieval-of-mysql-databases-from-shared-hosting-which-disall/24409#24409 – Palantir

+0

あなたの場合'exec'や' system'を実行することはできません。あなたは重要なデータをバックアップする必要があります。私はこの重要なデータをおそらく共有サーバーにホストしているのか(なぜなら、少なくとも1つは完全にアクセスできない)?この分野にあまり精通していない場合は、[PHPMyAdmin](http://www.phpmyadmin.net/home_page/)を試してみてください。ダンプSQLファイルをシンプルにします。 – rdlowrey

+1

なぜ 'mysqldump'を使用しないのですか? – xdazz

答えて

1

SHOW CREATE TABLEクエリを実行できます。これは、MySQLのクライアントから行われます。もちろん

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

データは、任意の正規select文を通じて取得することができ、あなたがスクリプト言語でそれをやっている場合は、あなたが必要とするしかし、データを保存することができます。 OUTFILE文の中へ

あなたはmysqlクライアントに単純だとあなたが選択を実行することができ、ファイルシステムへのアクセス権を持っている場合は...:

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

上記タブ区切りファイルを作成します。バック走行中のデータをロードするために

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

は、MySQL内からINSERT文を再作成しようとする可能性が高いことなどの特殊文字や物事をエスケープを超える問題になってしまいます。 CSVまたはタブで区切られたデータファイルを使用することは、データのエクスポートとインポートのための完全な標準と見なされます。

+0

これは実際のデータではなくテーブル構造用です:( – Marki555

+0

よくあるデータあなたがmysqlクライアントが実行しているファイルシステムにアクセスできる場合、Select ... Into Outfileを実行することができます。これを表示するために私の回答を編集します。 – Ilion

+0

@llionあなたは実際に私の投稿を読んでいますか?もしあなたがそれを持っていれば、私はSQLのダンプが必要だと言及することができるはずです、タブ出力など...私はこれで構成されているダンプをしたい: CREATE TABLE bla INSERT INTO bla(bla)VALUES(bla) INSERT INTO bla(bla)VALUES(bla) INSERT INTO bla(bla)VALUES(bla) など... あなたの解決策は私にとってはうまくないです – SniffWP

0

データベースへのリモートアクセス(MySQLポートはsshではない)がある場合は、サーバ間の同期を設定できます。オープンまたは必要なアクセス権を持つ他のサーバーを使用できます。 localhostの設定で十分です。
PHPMyAdminの最近のバージョンでは、同期を設定する機能が提供されています(ローカルマシンにインストールする)。また、SQLYogは同期機能をサポートしています。

+0

私はphpでこの砂丘が必要だと言いました:)しかし、お試しいただきありがとうございます... – SniffWP

0

この

$command="mysqldump --host=localhost --user=USER --password=***** DATABASENAME.table > db.sql"; 
system($command); 
関連する問題