1. ホーム
  2. データベース
  3. エスキューエルライト

SQLiteチュートリアル(VIII)。コマンドラインツールの紹介

2022-01-23 08:40:57

良い仕事をするためには、まず自分が良い仕事をする必要があります。SQLiteのコマンドラインツールを学ぶことは、SQLiteそのものを学ぶのにとてもとても役に立ちます。最も基本的なことは、SQLiteをより簡単に、より楽しく学べるようになるということです。SQLiteの公式ダウンロードサイトでは、マルチプラットフォームをサポートし、Oracleのsqlplusのように、SQLiteのほとんどの一般的な操作を実行できるコマンドラインツールが提供されています。

<テーブル コマンド名 コマンドの説明 .ヘルプ 内蔵コマンドをすべてリストアップします。 .backup dbname ファイル 指定されたデータベースを指定されたファイルにバックアップします。デフォルトは現在接続中のメインデータベースです。 .databases 現在の接続で、接続されているすべてのデータベース名とファイル名をリストアップします。 .dump TABLENAME ... 現在接続している MAIN データベースを SQL テキスト形式でダンプするか、テーブル名が指定されている場合はそれに一致するデータ・テーブルのみをダンプします。パラメータTABLENAMEは、LIKE式でサポートされるワイルドカードをサポートします。 .echo ON|OFF 表示出力のオン/オフを切り替えます。 .終了 現在のプログラムを終了します。 .説明 ON|OFF Human Readable フォームへの現在の接続の SELECT 出力のオン/オフを切り替えます。 .header(s) ON|OFF SELECT結果を表示する際に、カラムヘッダを表示するかどうかを指定します。 .import FILE TABLE 指定されたファイルから指定されたテーブルにデータをインポートする。 .インデックス TABLENAME すべてのインデックスの名前を表示します。テーブル名が指定されている場合は、そのテーブル名に一致するデータ・テーブルのインデックスのみを表示し、パラメータTABLENAMEはLIKE式でサポートされるワイルドカード文字をサポートします。 .log FILE|オフ  FILEには、標準出力の場合はstdout、標準エラー出力の場合はstderrを指定します。 .モード MODE TABLENAME 出力モードを設定します。ここで最も一般的なモードは列モードであり、SELECTの出力列を左揃えにします。 .nullvalue STRING  NULL 値を指定された文字列で代わりに表示します。 .出力ファイル名  現在のコマンドからのすべての出力を、指定されたファイルにリダイレクトします。 .出力stdout  現在のコマンドからのすべての出力を標準出力(スクリーン)にリダイレクトします。 .終了  現在のプログラムを終了します。  .read FILENAME  指定されたファイル内の SQL 文を実行します。 .restore DBNAME FILE  指定されたファイルからデータベースを復元します。デフォルトはメインデータベースですが、この時点で他のデータベース名を指定することもでき、指定されたデータベースは現在接続されているアタッチドデータベースとなります。 .schema TABLENAME データテーブル作成文、またはテーブル名が指定されている場合は、そのテーブル名に一致するデータテーブル作成文のみを表示し、TABLENAMEパラメータはLIKE式でサポートされるワイルドカード文字をサポートします。 .separator 文字列 .importの出力モードとフィールド間セパレータを変更します。 .ショー 各種設定の現在値を表示します。 .テーブル TABLENAME 現在の接続におけるメインデータベースのすべてのテーブル名、または、TABLENAMEパラメータがLIKE式でサポートされるワイルドカード文字をサポートしている場合、テーブル名に一致するデータテーブルの名前のみをリストアップします。 .幅 NUM1 NUM2 .... MODE が column のとき、各フィールドの幅を設定する。注:このコマンドのパラメータの順番は、フィールドの出力順を示す。


  以下のよくある例をご覧ください。

    1). データベースのバックアップとリストア。

コピーコード コードは以下の通りです。

    -- Create a data table in the currently connected main database, and later backup the main database to the D:/mydb.db file with the .backup command.
    sqlite> CREATE TABLE mytable (first_col integer);
    sqlite> .backup 'D:/mydb.db'
    sqlite> .exit
    -- by executing sqlite3.exe under a command line window to re-establish the connection to SQLite.
    -- Restore data from the backup file D:/mydb.db to the currently connected main database, and then you can see the mytable table with the .tables command.
    sqlite> .restore 'D:/mydb.db'
    sqlite> .tables
    mytable

    2). データテーブル作成文を指定されたファイルにDUMPする。
コピーコード コードは以下の通りです。

    -- first redirects the current output of the command line to D:/myoutput.txt, and later outputs the declaration statement of the previously created mytable table to that file.
    sqlite> .output D:/myoutput.txt
    sqlite> .dump mytabl%
    sqlite> .exit
    --opens the target file with Notepad in a DOS environment.
    D:\>notepad myoutput.txt

    3). 現在接続されているすべてのAttachedデータベースとメインデータベースを表示します。
コピーコード コードは以下の通りです。

    sqlite> ATTACH DATABASE 'D:/mydb.db' AS mydb;
    sqlite> .databases
    seq name file
    --- --------------- ------------------------
    0 main
    2 mydb D:\mydb.db

    4). メインデータベースのすべてのデータテーブルを表示する。
コピーコード コードは以下の通りです。

    sqlite> .tables
    mytable

    5). テーブル名 mytabl% に一致するデータ・テーブルのすべてのインデックスを表示します。
コピーコード コードは以下の通りです。

    sqlite> CREATE INDEX myindex on mytable(first_col);
    sqlite> .indices mytabl%
    myindex       

    6). テーブル名mytable%に一致するテーブルのスキーマ情報を表示します。
コピーコード コードは以下の通りです。

    --dependent index information for this table is also output.
    sqlite> .schema mytabl%
    CREATE TABLE mytable (first_col integer);
    CREATE INDEX myindex on mytable(first_col);

    7). SELECTの出力メッセージをフォーマットして表示します。
コピーコード コードは以下の通りです。

    --insert test data
    sqlite> INSERT INTO mytable VALUES(1);
    sqlite> INSERT INTO mytable VALUES(2);
    sqlite> INSERT INTO mytable VALUES(3);   
    -- Note the output format of the SELECT result set without any settings.
    sqlite> SELECT * FROM mytable;
    1
    2
    3   
    -- Displays the column names of the SELECT result set.
    -- Displays each field as a column.
    -- Set the width of the first column displayed in subsequent output to 10.
    sqlite> .header on
    sqlite> .mode column
    sqlite> .width 10
    sqlite> SELECT * FROM mytable;
    first_col
    ----------
    1
    2
    3