このままでは SQLite を起動するたびに初期設定することになり手間がかかる。起動時に設定を自動読み込みする方法について調べたので、ここでまとめておく。
(追記)動作確認の結果、外部キーの設定をここでしても無効でしたので本文中から削除しました。(2022.11.9)
設定内容
今回、設定内容として想定するのは以下の3行。
.mode column .headers on .open railgun.db
1行目は表示の仕方の設定で、デフォルトでは list になっている。column を推奨する人が多いようだが、個人的には tabs を利用することもある。HTML 形式で結果が欲しい時は .mode html とする。2行目はヘッダーを表示するための設定である。現在の設定は .show とすることで表示される。3行目はデータベース railgun.db と接続することを意味する。他のデータベースも利用する可能性があるなら外して、起動時に設定した方が良いだろう。なお接続中のデータベースと切断するコマンドは見つからなかった。.exit や .quit も試したが、プログラムが終了してしまった。.help でコマンド一覧を見たが、それらしきコマンドは見つからなかった。
設定ファイル
自動化するためには、上の2行を書いた .sqliterc という名前のファイルを作成する。動作確認は Windows で行った。ドットで始まるファイル名がいかにも Unix 風でトラブルが生じそうに感じて嫌だったが、メモ帳でファイルを作成したら、拡張子 .txt が追加されるくらいの煩わしさで済んだ。
.sqliterc の置き場所はユーザーフォルダである。私の場合は C:\ユーザー\tamaki となる。データベースは sqlite3.exe と同じフォルダに作成されるので、同じフォルダに置いてみたが反映されなかった。
テーブルの作成
このシリーズで使用しているテーブル STATUS, AFF の作成コマンドを記載しておく。SQLite の画面にコピペすれば良い。存在するテーブル一覧を見るには .tables とする。また、うっかりデータを2重登録するなどして、やり直したい場合はテーブルを削除すればよい。テーブル削除の命令は DROP TABLE STATUS ; のように DROP TABLE を使う。
CREATE TABLE STATUS ( NAME TEXT PRIMARY KEY, LEVEL INTEGER, SKILL TEXT, CHECK( 0 <= LEVEL ), CHECK( 5 >= LEVEL ) ) ; INSERT INTO STATUS VALUES ( '御坂美琴', 5, 'レールガン' ) ; INSERT INTO STATUS VALUES ( '上条当麻', 0, 'イマジンブレイカー' ) ; INSERT INTO STATUS VALUES ( '白井黒子', 4, 'テレポート' ) ; INSERT INTO STATUS VALUES ( '初春飾利', 1, 'サーマルハンド' ) ; INSERT INTO STATUS VALUES ( '佐天涙子', 0, 'エアロハンド' ) ; INSERT INTO STATUS VALUES ( '固法美偉', 3, 'クレアボイアンス' ) ; INSERT INTO STATUS VALUES ( '婚后光子', 4, 'エアロハンド' ) ; INSERT INTO STATUS VALUES ( '泡浮万彬', 3, 'フロートダイヤル' ) ; INSERT INTO STATUS VALUES ( '湾内絹保', 3, 'ハイドロハンド' ) ; INSERT INTO STATUS VALUES ( '吹寄制理', 0, NULL ) ; INSERT INTO STATUS VALUES ( '土御門元春', 0, NULL ) ; INSERT INTO STATUS VALUES ( '土御門舞夏', 0, NULL ) ; INSERT INTO STATUS VALUES ( '一方通行', 5, 'アクセラレータ' ) ; INSERT INTO STATUS VALUES ( '打ち止め', 3, 'レディオノイズ' ) ; INSERT INTO STATUS VALUES ( '麦野沈利', 5, 'メルトダウナー' ) ; INSERT INTO STATUS VALUES ( '絹旗最愛', 4, 'オフェンスアーマー' ) ; INSERT INTO STATUS VALUES ( 'フレンダ', 0, NULL ) ; INSERT INTO STATUS VALUES ( '滝壺理后', 4, 'AIMストーカー' ) ; INSERT INTO STATUS VALUES ( '浜面仕上', 0, NULL ) ; INSERT INTO STATUS VALUES ( '食蜂操祈', 5, 'メンタルアウト' ) ; INSERT INTO STATUS VALUES ( '弓箭入鹿', 4, 'ウェイブコンダクター' ) ; INSERT INTO STATUS VALUES ( '帆風潤子', 4, 'ランペイジドレス' ) ; INSERT INTO STATUS VALUES ( '口囃子早鳥', 3, 'テレパス' ) ; INSERT INTO STATUS VALUES ( '牧上小牧', 3, NULL ) ; INSERT INTO STATUS VALUES ( '海原光貴', 4, 'テレキネシス' ) ; INSERT INTO STATUS VALUES ( '獄彩海美', 4, 'メジャーハート' ) ; INSERT INTO STATUS VALUES ( '切斑芽美', 4, 'テレキネシス' ) ; INSERT INTO STATUS VALUES ( '誉望万化', 4, 'サイコキネシス' ) ; INSERT INTO STATUS VALUES ( '丘原燎多', 3, 'パイロキネシス' ) ; INSERT INTO STATUS VALUES ( '薄絹休味', 3, 'インシュレーション' ) ; INSERT INTO STATUS VALUES ( '雲川鞠亜', 2, 'バイオレンスドーナツ' ) ; INSERT INTO STATUS VALUES ( '黄泉川愛穂', 0, NULL ) ; INSERT INTO STATUS VALUES ( '垣根帝督', 5, 'ダークマター' ) ; INSERT INTO STATUS VALUES ( '藍花悦', 5, NULL ) ; INSERT INTO STATUS VALUES ( '削板軍覇', 5, NULL ) ;
CREATE TABLE AFF ( NAME TEXT, TEAM TEXT, PRIMARY KEY ( NAME, TEAM ), FOREIGN KEY ( NAME ) REFERENCES STATUS ) ; INSERT INTO AFF VALUES ( '垣根帝督', 'スクール' ) ; INSERT INTO AFF VALUES ( '御坂美琴', '常盤台中' ) ; INSERT INTO AFF VALUES ( '麦野沈利', 'アイテム' ) ; INSERT INTO AFF VALUES ( '食蜂操祈', '常盤台中' ) ; INSERT INTO AFF VALUES ( '食蜂操祈', '食蜂派閥' ) ; INSERT INTO AFF VALUES ( '海原光貴', '常盤台中' ) ; INSERT INTO AFF VALUES ( '弓箭入鹿', '常盤台中' ) ; INSERT INTO AFF VALUES ( '弓箭入鹿', '食蜂派閥' ) ; INSERT INTO AFF VALUES ( '絹旗最愛', 'アイテム' ) ; INSERT INTO AFF VALUES ( '獄彩海美', 'スクール' ) ; INSERT INTO AFF VALUES ( '婚后光子', '常盤台中' ) ; INSERT INTO AFF VALUES ( '切斑芽実', '常盤台中' ) ; INSERT INTO AFF VALUES ( '滝壺理后', 'アイテム' ) ; INSERT INTO AFF VALUES ( '白井黒子', '常盤台中' ) ; INSERT INTO AFF VALUES ( '白井黒子', 'ジャッジメント' ) ; INSERT INTO AFF VALUES ( '帆風潤子', '常盤台中' ) ; INSERT INTO AFF VALUES ( '帆風潤子', '食蜂派閥' ) ; INSERT INTO AFF VALUES ( '誉望万化', 'スクール' ) ; INSERT INTO AFF VALUES ( '固法美偉', 'ジャッジメント' ) ; INSERT INTO AFF VALUES ( '口囃子早鳥', '常盤台中' ) ; INSERT INTO AFF VALUES ( '口囃子早鳥', '食蜂派閥' ) ; INSERT INTO AFF VALUES ( '薄絹休味', '常盤台中' ) ; INSERT INTO AFF VALUES ( '泡浮万彬', '常盤台中' ) ; INSERT INTO AFF VALUES ( '牧上小牧', '常盤台中' ) ; INSERT INTO AFF VALUES ( '牧上小牧', 'ジャッジメント' ) ; INSERT INTO AFF VALUES ( '牧上小牧', '食蜂派閥' ) ; INSERT INTO AFF VALUES ( '湾内絹保', '常盤台中' ) ; INSERT INTO AFF VALUES ( '雲川鞠亜', '繚乱家政女学校' ) ; INSERT INTO AFF VALUES ( '初春飾利', '柵川中' ) ; INSERT INTO AFF VALUES ( '初春飾利', 'ジャッジメント' ) ; INSERT INTO AFF VALUES ( 'フレンダ', 'アイテム' ) ; INSERT INTO AFF VALUES ( '佐天涙子', '柵川中' ) ; INSERT INTO AFF VALUES ( '土御門舞夏', '繚乱家政女学校' ) ; INSERT INTO AFF VALUES ( '浜面仕上', 'アイテム' ) ;