sqlite3 - SQLite バージョン 3 用のコマンドラインインターフェース
sqlite3 [options] [databasefile] [SQL]
sqlite3 は端末ベースによる SQLite ライブラリへのフロントエンドです。これによりクエリーを対話的に評価して、その結果を複数フォーマットにより出力します。sqlite3 はシェルスクリプトや他のアプリケーション内から利用することで、パッチ処理的な機能を実現することもできます。
sqlite3 の対話型セッションを起動するには sqlite3 コマンドを起動します。その際には必要に応じてデータベースファイル名を指定します。データベースファイルが存在しなかった場合は、その時点で生成されます。データベースファイルが存在していたら、それを開きます。
たとえば "mydata.db" という名のデータベースファイルに "memos" という名のテーブルを生成して、いくつかレコード追加を行うには、以下のようにします。
$ sqlite3 mydata.db
SQLite version 3.8.8
Enter ".help" for instructions
sqlite> create table memos(text, priority
INTEGER);
sqlite> insert into memos values('deliver project
description', 10);
sqlite> insert into memos values('lunch with Christine',
100);
sqlite> select * from memos;
deliver project description|10
lunch with Christine|100
sqlite>
データベース名が指定されなかった場合、sql コマンドの ATTACH が用いられて、既存または新規のデータベースファイルに対してアタッチされます。同一の対話型セッション内であれば、ATTACH によるアタッチは複数データベースに対して実現されることもあります。これはデータベース間でのデータ移行に活用することができ、その際には必要に応じてスキーマ変更を行うこともできます。
任意の操作として、1 つまたは複数の SQL 文を 1 つの引数として与えて実行することもできます。複数の SQL 文はセミコロンで区切ることが必要です。
たとえば以下です。
$ sqlite3 -line mydata.db 'select * from memos where priority
> 20;'
text = lunch with Christine
priority = 100
対話型インタープリタにはメタコマンドがいくつかあります。これを利用して出力フォーマットを制御することができます。あるいは現在アタッチされているデータベースの検証、アタッチされているデータベースへの管理操作 (たとえばインデックスの再構築など) も行うことができます。メタコマンドは必ず先頭にドット (.) がつきます。
利用可能なメタコマンドは '.help' コマンドを実行すれば、いつでも確認することができます。たとえば以下のとおりです。
sqlite> .help
%backup ?DB? FILE DB (デフォルトは "main") を FILE に出力。
%bail on|off エラー発生時は停止。デフォルトはOFF。
%clone NEWDB 既存 DB から NEWDB へデータをクローン。
%databases アタッチ DB の名前やファイルを一覧表示。
%dump ?TABLE? ... SQL テキストフォーマットにより DB をダンプ。
テーブル指定時は LIKE パターン TABLE に
合致したテーブルのみダンプ。
%echo on|off コマンドエコーのオンまたはオフ。
%eqp on|off 自動的な EXPLAIN QUERY PLAN の有効、無効化。
%exit プログラム終了。
%explain ?on|off? EXPLAIN 用の出力モードのオンまたはオフ。
引き数がない場合、EXPLAIN をオンとする。
%fullschema スキーマおよび sqlite_stat テーブルの内容表示。
%headers on|off ヘッダー出力のオンまたはオフ。
%help 本メッセージの出力。
%import FILE TABLE FILE から TABLE へのデータインポート。
%indices ?TABLE? インデックス名の一覧出力。
テーブル指定時は LIKE パターン TABLE に
合致したインデックスのみ出力。
%load FILE ?ENTRY? 拡張ライブラリのロード。
%log FILE|off ログ出力のオンまたはオフ。FILE は stderr/stdout。
%mode MODE ?TABLE? 出力モードを以下の MODE とする。
csv カンマ区切り。
column 左寄せカラム。(.width 参照)
html HTML <table> コード。
insert TABLE の SQL insert 文。
line 各値を 1 行ずつ。
list 各値を .separator 文字列で区切る。
tabs タブ区切り。
tcl TCL リスト要素。
%nullvalue STRING NULL 値に代わって用いる文字列指定。
%once FILENAME FILENAME にのみ次の SQL コマンドを出力。
%open ?FILENAME? 現在 DB をクローズして FILENAME を再オープン。
%output ?FILENAME? FILENAME か stdout への出力。
%print STRING... 文字列 STRING そのものを出力。
%prompt MAIN CONTINUE 標準プロンプトの置き換え。
%quit プログラム終了。
%read FILENAME FILENAME 内の SQL 実行。
%restore ?DB? FILE DB (デフォルトは "main") の内容を FILE から復元。
%save FILE インメモリ DB の FILE への書き込み。
%schema ?TABLE? CREATE 文の表示。
テーブル指定時は LIKE パターン TABLE に
合致したテーブルのみ出力。
%separator STRING ?NL? 出力モードにて用いる区切り文字の変更。また CSV
にて .import NL を行終端文字とする。
%shell CMD ARGS... システムシェルにおいて CMD ARGS... を実行する。
%show さまざまな設定における現在値を表示。
%stats on|off stats をオンまたはオフにする。
%system CMD ARGS... システムシェルにおいて CMD ARGS... を実行する。
%tables ?TABLE? テーブル名の一覧出力。
テーブル指定時は LIKE パターン TABLE に
合致したテーブルのみ出力。
%timeout MS ロックテーブルを MS ミリ秒だけオープンを試みる。
%timer on|off SQL タイマーのオンまたはオフ。
%trace FILE|off 各 SQL 文が実行されるままを出力。
%vfsname ?AUX? VFS スタック名を表示。
%width NUM1 NUM2 ... "column" モードにてカラム幅を指定。
負数は右寄せを行う。
sqlite>
sqlite3 には以下のオプションがあります。
エラーが発生したら停止します。
強制的にバッチ I/O とします。
クエリー結果の出力を、フォームのような表形式とします。そしてカラム間にはホワイトスペース文字を挿入して、間隔をあけた出力を行います。
stdio からの読み込みにあたって command を実行します。
出力モードを CSV (カンマ区切り) に設定します。
コマンド実行にあたってそのコマンドを表示します。
コマンドを file から読み込んで実行します。そのファイルには複数の SQL 文やメタコマンドを含めることができます。
ヘッダー出力をオンまたはオフにします。
オプションに関するヘルプを表示して終了します。
クエリー結果を単純な HTML 表形式で出力します。
強制的に対話型 I/O とします。
クエリー結果の出力を、フォームのような表形式とします。クエリー結果の出力を、1 行ごとに示すようにします。各行は空行により区切られます。スクリプトや他のプログラムから簡単に解析できるように設計されたものです。
クエリー結果をセパレータ文字 (デフォルトは | ) を用いて、各フィールド値を区切って表示します。これがデフォルトです。
デフォルトの mmap サイズを N に設定します。
NULL 値に対して用いる文字列を設定します。デフォルトは ” (空文字) です。
出力時のフィールド間の区切り文字を設定します 。デフォルトは '|' です。
出力を確定する直前にメモリ使用状況を表示します。
SQLite バージョンを表示します。
デフォルトの VFS として name を用います。
sqlite3 では、対話型環境を設定するための初期化ファイルを読み込む機能があります。初期化の過程では、それ以前に設定されていた値は上書き更新されます。初期化の流れは以下のとおりです。
o デフォルトの設定が以下のようにして定まります。
mode = LIST
separator = "|"
main prompt = "sqlite> "
continue prompt = " ...> "
|cc .
o ファイル ~/.sqliterc が存在する場合、これが最初に処理されます。ユーザーのホームディレクトリにあるものであり、それが読み込まれて処理されます。一般的にはメタコマンドのみを含めます。
o オプション -init があった場合、そこに指定されたファイルが処理されます。
o 上以外のコマンドラインオプションがすべて処理されます。
http://www.sqlite.org/cli.html
sqlite3-doc パッケージ
このマニュアルページは、もともと Debian GNU/Linux システム向けに Andreas Rottmann <rotty@debian.org> が制作しました (他システムでも利用できるはずです)。その後に Bill Bumgarner <bbum@mac.com> が改訂を行い、さらに Laszlo Boszormenyi <gcs@debian.hu> が更新を行っています。