概要
入門.1はこちら
この記事ではアーカイブ内の「sqlar」テーブルについて記載する。
コマンドラインツールで作成したアーカイブにはデフォルトで「sqlar」というテーブルがある。 このテーブルには複数のアーカイブの中身に関する情報が格納されている。 sqlarテーブルの各カラムの意味は以下の通り。
カラム名 | 意味 |
---|---|
name | ファイル格納時のファイルパス |
mode | unixスタイルのアクセス権限 |
mtime | ファイルの修正時刻(1970年1月1日0時0分からの秒数) |
sz | ファイルの圧縮前のサイズ |
data | アーカイブされているデータの内容 |
テキストファイルであれば「data」をSQLで文字列検索出来るし、 アーカイブした日時を確認することが出来る。
アーカイブ前後のデータを確認してみる
環境
- Windows 10 64bit
- SQLite3 ver.3.39.2
C:\temp>rem # 1.
C:\temp>dir
ドライブ C のボリューム ラベルは Windows です
ボリューム シリアル番号は 2CE7-FFC0 です
C:\temp のディレクトリ
2022/09/05 23:35 <DIR> .
2022/09/05 23:35 <DIR> ..
2022/08/16 12:12 9 sample1.txt
2022/08/20 14:42 3,614 sample2.png
2 個のファイル x,xxx バイト
2 個のディレクトリ x,xxx,xxx,xxx バイトの空き領域
C:\temp>rem # 2.
C:\temp>sqlite3 archive.sqlar -Ac
C:\temp>rem # 3.
C:\temp>sqlite3 archive.sqlar -Ai ./sample1.txt ./sample2.png
C:\temp>rem # 4.
C:\temp>dir
ドライブ C のボリューム ラベルは Windows です
ボリューム シリアル番号は 2CE7-FFC0 です
C:\temp のディレクトリ
2022/09/06 00:19 <DIR> .
2022/09/06 00:19 <DIR> ..
2022/09/06 00:19 1,536 archive.sqlar
2022/08/16 12:12 9 sample1.txt
2022/08/20 14:42 3,614 sample2.png
3 個のファイル 5,159 バイト
2 個のディレクトリ 46,067,060,736 バイトの空き領域
C:\temp>sqlite3 archive.sqlar
SQLite version 3.39.2 2022-07-21 15:24:47
Enter ".help" for usage hints.
sqlite> .tables
sqlar
sqlite> -- # 5.
sqlite> select * from sqlar ;
./sample1.txt|33206|1660619553|9|teststa
./sample2.png|33206|1660974123|3614|x???s???b``???p b``i```??`??{?E)?? w'?u?d^9,?????$?????b? ????h?fOx/?i~w? V?@???? ????AA)h? #3C???? _????A@pT??Q??JG??*U:?tT??Q??JG?RY??m?z?????6?c?t?sY??
- アーカイブ前のデータ
- 新規アーカイブの作成
- アーカイブにデータを追加
- データ追加後のアーカイブサイズ
- アーカイブ内容の確認 (./sample2.pngは画像データなのでコンソールでは表示されない)
sqlarファイルと画像ファイルのサイズを比較すると、それなりに圧縮されていることがわかる。
mtimeカラムを日時に直すには
datetime()
関数を使えばいい。
sqlite> select datetime('1970-01-01','+' || mtime || ' seconds') as s_datetime from sqlar;
2022-08-16 03:12:33
2022-08-20 05:42:03
参考URL
-
Command Line Shell ForSQLite
公式のコマンドラインツールに関するドキュメント
https://www.sqlite.org/cli.html -
SQLite Archive Files
公式のSQLite形式のアーカイブに関するドキュメント
https://sqlite.org/sqlar.html