名前

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

SQLITE メタコマンド

対話型インタープリタにはメタコマンドがいくつかあります。これを利用して出力フォーマットを制御することができます。あるいは現在アタッチされているデータベースの検証、アタッチされているデータベースへの管理操作 (たとえばインデックスの再構築など) も行うことができます。メタコマンドは必ず先頭にドット (.) がつきます。

利用可能なメタコマンドは '.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 には以下のオプションがあります。

-bail

エラーが発生したら停止します。

-batch

強制的にバッチ I/O とします。

-column

クエリー結果の出力を、フォームのような表形式とします。そしてカラム間にはホワイトスペース文字を挿入して、間隔をあけた出力を行います。

-cmd command

stdio からの読み込みにあたって command を実行します。

-csv

出力モードを CSV (カンマ区切り) に設定します。

-echo

コマンド実行にあたってそのコマンドを表示します。

-init file

コマンドを file から読み込んで実行します。そのファイルには複数の SQL 文やメタコマンドを含めることができます。

-[no]header

ヘッダー出力をオンまたはオフにします。

-help

オプションに関するヘルプを表示して終了します。

-html

クエリー結果を単純な HTML 表形式で出力します。

-interactive

強制的に対話型 I/O とします。

-line

クエリー結果の出力を、フォームのような表形式とします。クエリー結果の出力を、1 行ごとに示すようにします。各行は空行により区切られます。スクリプトや他のプログラムから簡単に解析できるように設計されたものです。

-list

クエリー結果をセパレータ文字 (デフォルトは | ) を用いて、各フィールド値を区切って表示します。これがデフォルトです。

-mmap N

デフォルトの mmap サイズを N に設定します。

-nullvalue string

NULL 値に対して用いる文字列を設定します。デフォルトは ” (空文字) です。

-separator separator

出力時のフィールド間の区切り文字を設定します 。デフォルトは '|' です。

-stats

出力を確定する直前にメモリ使用状況を表示します。

-version

SQLite バージョンを表示します。

-vfs name

デフォルトの 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> が更新を行っています。