やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

SQLite3ドットコマンド(.open)

 既存のデータベースを閉じて指定DBファイルを開く。

成果物

.help

.open ?OPTIONS? ?FILE?   Close existing database and reopen FILE

 「既存のデータベースを閉じて、FILEを再度開きます」

.open





.open --help
unknown option: --help

 ?OPTIONS?における説明が見つからない……。ヘルプ。

公式ドキュメント

 読み取れたのは以下2点。

  • ファイルが存在しないなら新規作成する
  • 絶対パス指定可

 やはり?OPTIONS?の説明なし。

.open

DBファイル新規作成確認

 .opena.dbDBファイルを作成する。

 まずはa.dbを削除する。

rm a.db

 次にa.dbを作成する。

sqlite3 :memory: \
".open a.db" \
"create table T(C text);" \
"insert into T values('AAA');" \
"select sql from sqlite_master;" \
"select * from T;"
CREATE TABLE T(C text)
AAA

 ファイル存在確認。

ls -1 | grep a.db
a.db

DBファイルオープン確認

 ファイル内容確認。

sqlite3 :memory: \
".open a.db" \
"select sql from sqlite_master;" \
"select * from T;"
CREATE TABLE T(C text)
AAA

絶対パスでも確認

rm /tmp/work/a.db
sqlite3 :memory: \
".open /tmp/work/a.db" \
"create table T(C text);" \
"insert into T values('AAA');" \
"select sql from sqlite_master;" \
"select * from T;"
CREATE TABLE T(C text)
AAA

 ファイル存在確認。

cd /tmp/work
ls -1 | grep a.db
a.db

 ファイル内容確認。

sqlite3 :memory: \
".open /tmp/work/a.db" \
"select sql from sqlite_master;" \
"select * from T;"
CREATE TABLE T(C text)
AAA

?OPTIONS?

 C言語におけるファイルオープンフラグなら、r,ro,w,rw,aとかだろうが。不明。

sqlite3 :memory: ".open r a.db" "select * from T;"
Error: no such table: T
sqlite3 :memory: ".open ro a.db" "select * from T;"
Error: no such table: T
sqlite3 :memory: ".open readonly a.db" "select * from T;"
Error: no such table: T
sqlite3 :memory: ".open read_only a.db" "select * from T;"
Error: no such table: T

対象環境

$ uname -a
Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux

前回まで