SQLiteのスキーマ定義をHTML形式で出力する

SQL形式ので出力なら以下のコマンドでできるんだけど、

$ sqlite3 db_file ".schema"

HTML形式で見たかったのでサックリとシェルスクリプトを書いた。あとでまた使うかもしれないのでメモっておく。

# sqlite_schema.sh
sqlitedb=$1

echo "<html><body>"
for i in `sqlite3 ${sqlitedb} ".tables"`
do 
  echo "<h2>${i}</h2><ul>"
  for j in `sqlite3 ${sqlitedb} "PRAGMA table_info(${i});" | awk 'BEGIN{FS="|"}{printf "%s(%s)\n", $2, $3}'`
  do 
    echo "<li>${j}</li>"
  done
  echo "</ul>"
done
echo "</body></html>"

使い方はこんな感じ。

$ sh sqlite_schema.sh db_file

スキーマだけじゃなく中のデータも出力したい場合

中のデータも出力したくなったときはこちらを。

# sh sqlite_dump.sh db_file
sqlitedb=$1

echo "<html><body>"
for i in `sqlite3 ${sqlitedb} ".tables"`
do 
  echo "<h2>${i}</h2>"
  echo "<table border=1>"
  echo "<tr>"
  for j in `sqlite3 ${sqlitedb} "PRAGMA table_info(${i});" | awk 'BEGIN{FS="|"}{printf "%s\n", $2}'`
  do 
    echo "<th>${j}</th>"
  done
  echo "</tr>"
  sqlite3 -html ${sqlitedb} "select * from ${i};"
  echo "</table>"
done
echo "</body></html>"