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); }
めっちゃめんどくさいんですけど、もっといい方法ないのかしら・・。