仕事で時々、SQLiteのデータベースを見るので基礎的なコマンドをメモしておく。
- DBファイルに接続する
- ヘルプを表示
- テーブルの一覧を表示
- DBファイルの接続を終了する
- クエリ結果にカラム名を含める (デフォルトだとカラム名が表示されない)
- クエリ結果からN行のみ表示する (以下の例では10行を表示)
- 特定のパターンを含むカラムを検索する
- データベースの内容をCSVに保存する
- ブラウザ履歴を抽出する
DBファイルに接続する
sqlite3 database.db
ヘルプを表示
.help
テーブルの一覧を表示
.tables
DBファイルの接続を終了する
.exit または.quit
クエリ結果にカラム名を含める (デフォルトだとカラム名が表示されない)
.headers on
クエリ結果からN行のみ表示する (以下の例では10行を表示)
select * from sample_table limit 10;
特定のパターンを含むカラムを検索する
select * from sample_table where column1 like '%keyword%';
※ like文や%演算子の詳細はこちらを参照
データベースの内容をCSVに保存する
.headers on
.mode csv
.output output.csv
SELECT * FROM sample_table;
上記のコマンドはsample_tableテーブルの内容をヘッダー付きでoutput.csvに保存する。(保存先はカレントディレクトリ)
ブラウザ履歴を抽出する
ダウンロード履歴を抽出。
//Chromium
SELECT datetime((downloads.start_time/1000000) - 11644473600, "unixepoch") AS "download_start_time", target_path, site_url,tab_url, mime_type FROM downloads ORDER BY downloads.start_time DESC;
//Firefox
SELECT datetime((a1.dateAdded/1000000), "unixepoch") AS "date_added", datetime((a1.lastModified/1000000), "unixepoch") AS "last_modified", a1.content, a2.content AS "json_data" FROM moz_annos a1 INNER JOIN moz_annos a2 ON a1.place_id = a2.place_id WHERE a1.content != a2.content AND a1.content NOT LIKE '{%}' ORDER BY a1.dateAdded DESC;
URL履歴を抽出。
//Chromium
SELECT datetime((urls.last_visit_time/1000000) - 11644473600, "unixepoch") AS "last_visit_time", url, title FROM urls ORDER BY urls.last_visit_time DESC;
//Firefox
SELECT datetime((moz_places.last_visit_date/1000000), "unixepoch") AS "last_visit_time", url, description, visit_count FROM moz_places ORDER BY moz_places.last_visit_date DESC;