実際には、ローカルの MySQL にしか使えなさそうですが、ビューとテーブルの CREATE 文を取得して、TABLE からは CSV 形式のデータを取るコードです。
<?php // ************************************** // MIME と キャラクタセットを設定 // ************************************** header( "Content-Type: text/html; Charset=utf-8" ); // ************************************** // キャッシュを無効にするヘッダ // ************************************** header( "pragma: no-cache" ); header( "Expires: Wed, 31 May 2000 14:59:58 GMT" ); header( "Cache-control: no-cache" ); // *********************************************** // グローバル変数 // *********************************************** $server = 'データベースサーバー'; $db_name = 'データベース名'; $user = 'ユーザ名'; $password = 'パスワード'; print "処理開始<br>"; // *********************************************** // データベース接続 // *********************************************** $connect = @ new mysqli($server, $user, $password, $db_name); if ($connect->connect_error) { die('Connect Error (' . $connect->connect_errno . ') ' . $connect->connect_error); } $query = "show full tables"; // クエリ $result = $connect->query($query); if ( !$result ) { die('クエリーに誤りがあります : ' . $connect->error ); } $table = array(); $view = array(); while ($row = $result->fetch_array(MYSQLI_BOTH)) { if ( $row[1] == "BASE TABLE" ) { $table[] = $row[0]; } if ( $row[1] == "VIEW" ) { $view[] = $row[0]; } } $create_view = ""; for( $i = 0; $i < count( $view ); $i++ ) { $query = "show create view {$view[$i]}"; $result = $connect->query($query); while ($row = $result->fetch_array(MYSQLI_BOTH)) { $create_view .= $row[1] . ";\n\n"; } } print "view 定義出力<br>"; file_put_contents("./create_view.sql", $create_view ); $create_table = ""; for( $i = 0; $i < count( $table ); $i++ ) { $query = "show create table {$table[$i]}"; $result = $connect->query($query); while ($row = $result->fetch_array(MYSQLI_BOTH)) { $create_table .= "// [{$i}] {$table[$i]}" . "\n"; $create_table .= $row[1] . ";\n\n"; } } print "table 定義出力<br>"; file_put_contents("./create_table.sql", $create_table ); print "データ出力開始<br>"; for( $i = 0; $i < count( $table ); $i++ ) { $path = realpath("./"); $path .= DIRECTORY_SEPARATOR ."file_{$i}.csv"; @unlink($path); $path = str_replace("\\", "\\\\", $path ); $query = "SELECT * INTO OUTFILE '{$path}' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\\n' FROM `{$table[$i]}`"; $connect->query($query); } print "データ出力終了<br>"; ?>
レンタルサーバでは、phpmyadmin をインストールしたほうが速いですね。(実際そうしました) ただ、phpmyadmin は、最新では PHP 5.3+ を要求するので注意です。 インストールと言うほどの処理は無く、アップロードして config フォルダを作って、setup フォルダにアクセスして特別な設定があればそこで入力して設定ファイルを作成し、ファイルを phpmyadmin があるフォルダに移動して config フォルダを削除すれば出来上がりです。 関連する記事
|
【PHP + データベースの最新記事】
- PDO MySQL のバインドを使用した標準的な記述( ロリポップ )
- PHP で MySQLをテストする為のソースコード
- PHP で ODBC 関数を使って MS Access( データベース )にアクセスして結果を JSON 文字列として出力する
- Windows 環境の MySQL + PHP で、ODBC ドライバを使用してデータを取得する場合の3パターン
- PHP : SQLインジェクション対策付きの、MySQL のデータを JSON で返す自家製 API テスト用のテンプレート3パターン
- PHP で 自家製 API を作成して jQuery の簡単なコードで更新処理を行うサンプル
- PHP : PIPES_AS_CONCAT を使用して、CSV 作成処理をサーバの負荷にして高速に WrodPress のデータを Excel で読み込める CSV として保存する処理
- PHP : WrodPress のデータを insert SQL で保存する処理
- PHP : WrodPress のデータを Excel で読み込める CSV として保存する処理
- PHP で MySQLi 使用時の データ型定数( MYSQLI_TYPE_ ) の詳細 ( バックアップ用 insert 文を作る為 )
- PHP : JSON 文字列で定義されたフォーマットを元に、そのフォーマットにセットされた配列を使って insert と update の SQL 文を自動作成。
- PHP : PDO のエラー処理
- PHPのマニュアルにある、SQLインジェクション攻撃の例
- PHP : SQLite3 を PDO の ODBC 経由で読み込み
- PHP : 5.3 / 5.2.11 用共用 sqlite3(日本語テーブル) 読み込み
- PHP : Oracle を処理する COM を使ったクラス