MySQLでDB内の全てのテーブルに対してshow create tableする

どうも簡単なスクリプトを書いた方が早いみたいなのでそうする。以下を実行すると指定したDBの全てのテーブルに show create table した結果が出力されます。mysqldupのスキーマのみオプションでは重厚すぎる場合などに。二つのDBに対して実行した結果をdiffで比べて簡易mysqldiffとしても使えます。

GitHub Gist – mysql_all_create_tables_for_php

<?php 
$con = new mysqli('localhost', 'root', 'pw', 'dbname');
$mysqli_result = $con->query('show tables');
$table_name_array = $mysqli_result->fetch_all(MYSQLI_BOTH);
$mysqli_result = null;
foreach ($table_name_array as $row) {
    $mysqli_result = $con->query('show create table ' . $row[0]);
    $create_table = $mysqli_result->fetch_array();
    echo $create_table[1] . "\r\n\r\n";
    $mysqli_result = null;
}

Share this…