アーカイブ機能を使う。
成果物
CLIコマンド版
今回は上記のドットコマンド版。ドットコマンドをCLIコマンドの引数に渡して実行する。
テスト用ファイル作成
echo -e "aaa\nAAA" > A.txt echo -e "bbb\nBBB" > B.txt mkdir -p ./D/DD echo -e "ddd\nDDD" > ./D/DD/DDD.txt
アーカイブファイル作成
sqlite3 texts ".archive -c A.txt B.txt D/"
ls -1 | grep texts
texts
アーカイブファイルの一覧表示
sqlite3 texts ".archive -t"
A.txt B.txt D/ D//DD D//DD/DDD.txt
詳細表示
sqlite3 texts ".archive -tv"
-rw-r--r-- 8 2019-08-17 01:44:15 A.txt -rw-r--r-- 8 2019-08-17 01:44:15 B.txt drwxr-xr-x 0 2019-08-17 01:53:09 D/ drwxr-xr-x 0 2019-08-17 01:53:09 D//DD -rw-r--r-- 8 2019-08-17 01:53:09 D//DD/DDD.txt
アーカイブの展開
まずは元ファイルを削除する。
rm -rf A.txt B.txt D/
アーカイブを展開する。
sqlite3 texts ".archive -x"
ファイル出力されたことを確認する。
find .
. ./D ./D/DD ./D/DD/DDD.txt ./B.txt ./A.txt ./texts
ファイルの内容も確認。
cat A.txt
aaa AAA
cat B.txt
bbb BBB
cat D/DD/DDD.txt
ddd DDD
SQLite3で確認
sqlite3 texts ".tables"
sqlar
sqlite3 texts ".headers on" "select * from sqlar;"
name|mode|mtime|sz|data A.txt|33188|1566006255|8|aaa AAA B.txt|33188|1566006255|8|bbb BBB D/|16877|1566006789|0| D//DD|16877|1566006789|0| D//DD/DDD.txt|33188|1566006789|8|ddd DDD
アーカイブにファイル挿入
ファイル作成。
echo -e "ccc\nCCC" > C.txt
ファイルをアーカイブへ挿入する。
sqlite3 texts ".archive -i C.txt"
アーカイブ一覧にC.txt
が追加されていることを確認。
sqlite3 texts ".archive -t"
A.txt B.txt C.txt D/ D//DD D//DD/DDD.txt
更新
まずは状態を確認する。
sqlite3 texts "select * from sqlar;"
A.txt|33188|1566006255|8|aaa AAA B.txt|33188|1566006255|8|bbb BBB D/|16877|1566006789|0| D//DD|16877|1566006789|0| D//DD/DDD.txt|33188|1566006789|8|ddd DDD C.txt|33188|1566007305|8|ccc CCC
B.txt
を編集する。末尾にばばば
を追記して先頭行aaa
を削除する。
echo "ばばば" >> B.txt sed -ie '1d' B.txt
cat B.txt
BBB ばばば
編集をアーカイブに反映する。
ファイルパスをワイルドカードで指定するとエラーになった。
sqlite3 texts ".archive -u *.txt"
ERROR: cannot stat file: *.txt
パスを指定しなければエラーは出ないが反映されず……。
sqlite3 texts ".archive -u"
sqlite3 texts "select * from sqlar;" A.txt|33188|1566006255|8|aaa AAA B.txt|33188|1566006255|8|bbb BBB D/|16877|1566006789|0| D//DD|16877|1566006789|0| D//DD/DDD.txt|33188|1566006789|8|ddd DDD C.txt|33188|1566007305|8|ccc CCC
固定名で指定すれば成功。
sqlite3 texts ".archive -u B.txt"
A.txt|33188|1566006255|8|aaa AAA D/|16877|1566006789|0| D//DD|16877|1566006789|0| D//DD/DDD.txt|33188|1566006789|8|ddd DDD C.txt|33188|1566007305|8|ccc CCC B.txt|33188|1566007713|14|BBB ばばば
ワイルドカードが使えないのは痛い。CLIの-A
でやったほうが良さそう。
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12(1)-release
- SQLite 3.29.0
- MeCab 0.996ユーザ辞書
$ uname -a Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux
前回まで
- SQLite3学習をはじめよう
- SQLite3学習 SQLiteについて
- SQLite3学習 SQLiteの適切な用途
- SQLite3学習 SQLiteの特徴
- SQLite3学習 SQLiteのクセ
- SQLite3学習 データ型とアフィニティ
- SQLite3学習 演算子の一覧
- SQLite3学習 よくある質問
- SQLite3学習 SQLiteダウンロード&コンパイル
- SQLite3学習 Tclで操作する
- SQLite3学習 ビルドオプション動作確認(SQLITE_ALLOW_URI_AUTHORITY)
- SQLite3学習 面白そうなコンパイルオプション
- SQLite3学習 SQLiteの拡張について
- SQLite3学習 JSON拡張
- SQLite3学習 JSON拡張(json_extract)
- SQLite3学習 JSON拡張(json_each)
- SQLite3学習 JSON拡張(json_tree オブジェクト→行)
- SQLite3学習 JSON拡張(json_tree オブジェクトツリー→行)
- SQLite3学習 JSON拡張(json_tree オブジェクト配列→行)
- SQLite3学習 JSON拡張(json_group_array 行→配列)
- SQLite3学習 JSON拡張(json_group_object 行→オブジェクト)
- SQLite3学習 JSON拡張(json_array_length)
- SQLite3学習 JSON拡張(json_type)
- SQLite3学習 JSON拡張(json_valid)
- SQLite3学習 JSON拡張(json_quote)
- SQLite3学習 JSON拡張(json_array)
- SQLite3学習 JSON拡張(json_object)
- SQLite3学習 JSON拡張(json_patch)
- SQLite3学習 JSON拡張(json_insert)
- SQLite3学習 JSON拡張(json_replace)
- SQLite3学習 JSON拡張(json_set)
- SQLite3学習 JSON拡張(json_remove)
- SQLite3学習 全文検索(FTS5)
- SQLite3学習 全文検索FTSを日本語で使う方法を調べてみた
- 形態素解析MeCabをインストールする
- SQLite3学習 全文検索FTS5のMeCab用トークナイザを実装する
- SQLite3学習 FTS5+MeCabでクエリ構文
- SQLite3学習 FTS5のテーブル作成と初期化
- SQLite3学習 FTS5の補助関数
- SQLite3学習 FTS5のfts5vocab仮想テーブル
- SQLite3学習 再帰クエリ(WITH RECURSIVE)
- SQLite3学習 R-Treeモジュール
- SQLite3学習 ファイル入出力(SQL集計)
- SQLite3学習 拡張関数(generate_series)
- SQLite3謎 主キーの型をintにするとinsertで値を省略したらNULLになってしまう
- SQLite3学習 入出力関数(fsdir, readfile, writefile, edit)
- SQLite3ビルド コンパイルオプションを付与する方法(CFLAGS等))
- SQLite3 コンパイルオプション確認方法(pragma compile_options)
- SQLite3ビルド ICUを有効にする(SQLITE_ENABLE_ICU)
- SQLite3拡張 ICUを動的ロードする
- SQLite3拡張 ICUでcollateする
- SQLite3拡張 ICUで全文検索する(FTS4)
- SQLite3拡張 SQL関数一覧(pragma function_list)
- SQLite3拡張 仮想テーブルモジュール一覧(pragma module_list)
- SQLite3拡張 プラグマ一覧(pragma pragma_list)
- SQLite3謎 values()構文
- SQLite3学習 インタフェース概要
- SQLite3学習 CLI起動引数(-A)Archive
- SQLite3ビルド SQLITE_HAVE_ZLIBコンパイルオプション付与するも確認できず
- SQLite3学習 CLI(-readonly)
- MeCabユーザ辞書の作り方(Wikipediaの題名を名詞とした)
- SQLite3学習 CLI(-zip)