phpでSQLiteの全データダンプするのめんどくさかった
phpのスクリプトでSQLite3のデータベースの中の情報(生成したテーブルとかその中のデータとか)をダンプして表示したかったんだけど、意外とめんどうだった。
まずsqlite_masterという情報一覧用のテーブルを参照して全テーブルの名前を取得して、そこから一個ずつテーブルの中を見ていく方法しかなさそうだった。
こんな感じの処理なった。
//デバッグ関数、SQL内の全データをダンプする
function debug_dump_sql(){
$db = new PDO('sqlite:./hoge.sqlite3');
//全テーブルを表示
echo "---- ALL_TABLES ----\n";
$sql = "select * from sqlite_master";
$stmt = $db->prepare($sql);
$stmt->execute();
$tables = $stmt->fetchall(PDO::FETCH_ASSOC);
var_dump($tables);
//テーブル内データを表示
foreach ($tables as $table) {
$table_name = $table["name"];
echo "---- TABLE:".$table["name"]." ----\n";
$sql = "select * from ".$table_name;
$stmt = $db->prepare($sql);
$stmt->execute();
$columns = $stmt->fetchall(PDO::FETCH_ASSOC);
var_dump($columns);
}
unset($db);
}
めっちゃめんどくさいんですけど、もっといい方法ないのかしら・・。