2022年9月10日土曜日

SQLite3 独自アーカイブ(archive)形式について 入門.1

概要

SQLite を使って複数のファイルやフォルダを一つのファイルにまとめることができる。 よく知られているアーカイブ手法としてzipやtarなどがあるが、 SQLiteのアーカイブはSQLを使って格納されているファイルを調べることが出来るのが特徴。

アーカイブファイルはzipやtarコマンドで完璧に管理できてるよ、という場合には使わなくてもよい。 アーカイブファイルをSQLで確認出来ることに魅力を感じる、というのであれば試してみるといい。

SQLite 独自アーカイブを利用するにはコマンドラインツールのver 3.23.0 以降が必要。

Text, Image, etc...
Text, Image, etc...
table: sqlar
table: sqlar
SQLite
SQLite
Archive
Archive
Text is not SVG - cannot display

アーカイブファイルを作ってファイルを出し入れしてみる

まず空のアーカイブを作成し、そこにテキストファイルを出し入れしてみる。 ここではアーカイブの拡張子を「.sqlar」としているが、なんでもいい。

環境
  • Windows 10 64bit
  • SQLite3 ver.3.39.2

C:\temp> rem # 1.
C:\temp> sqlite3 archive.sqlar -Ac

C:\temp> rem # 2.
C:\temp> sqlite3 archive.sqlar -Ai ./sample.txt

C:\temp> rem # 3.
C:\temp> sqlite3 archive.sqlar -At
sample.txt

C:\temp> rem # 4.
C:\temp> sqlite3 archive.sqlar -Ax ./sample.txt
                
  1. 「archive.sqlar」という新規ファイルを作成する
  2. 「archive.sqlar」に「sample.txt」を追加する
  3. 「archive.sqlar」に格納されているファイルを確認する
  4. 「archive.sqlar」から「sample.txt」を取り出す

アーカイブの中身をSQLで確認する

sqliteアーカイブには「sqlar」というテーブルがあり、 アーカイブされたファイルの情報が格納されている。


C:\temp>rem # 1.

C:\temp>sqlite3 archive.sqlar -Ac

C:\temp>
C:\temp>rem # 2.

C:\temp>sqlite3 archive.sqlar -Ai ./sample.txt

C:\temp>
C:\temp>rem # 3.

C:\temp>sqlite3 archive.sqlar
SQLite version 3.39.2 2022-07-21 15:24:47
Enter ".help" for usage hints.

sqlite> -- # 4.
sqlite> .tables
sqlar

sqlite> .mode box

sqlite> -- # 5.
sqlite> select * from sqlar;
┌──────────────┬───────┬────────────┬────┬────────────────────┐
│     name     │ mode  │   mtime    │ sz │        data        │
├──────────────┼───────┼────────────┼────┼────────────────────┤
│ ./sample.txt │ 33206 │ 1660972613 │ 18 │ This is sample.txt │
└──────────────┴───────┴────────────┴────┴────────────────────┘
                

最初は概念とアーカイブの作り方、ファイルの出し入れができればOK。

参考URL