SQLite3のコマンド

スポンサーリンク

.schemaコマンド

テーブルのスキーマに関する情報を取得します。

sqlite> .schema <TABLE>  

TABLEを省略した場合は全てのテーブル情報を表示します。

sqlite> .schema
CREATE TABLE address(id int, post_no text, address text);
CREATE TABLE user(id int, name varchar(50), age int);

また、データベース内にテーブルを作成した場合、「sqlite_master」というテーブルに実行されたCREATE TABLE文が格納されます。このテーブルのデータを確認する事によりどのようなCREATE文が実行されたのか確認することが可能です。(表示modeはline。)

sqlite> select * from sqlite_master;
    type = table
    name = user
tbl_name = user
rootpage = 2
     sql = CREATE TABLE user(id int, name varchar(50), age int)

    type = table
    name = address
tbl_name = address
rootpage = 3
     sql = CREATE TABLE address(id int, post_no text, address text)

.backupコマンド

データベースは一つのファイルを使用しているため、バックアップを取る場合には単純にファイルをコピーするだけで作成できますが、一応コマンドがあります。

sqlite> .backup <DB> <FILE>  

DBにはバックアップを取りたいデータベース名を指定します。データベース名とはsqlite> .databasesで表示されるname欄の事です。決してファイル名では無いので注意してください。但し、省略した場合はmainとなるので通常は省略しても大丈夫です。 FILEにはバックアップするファイル名を指定します。拡張子などはなんでもいいです。

sqlite> .backup hoge.sqlite.bk

実行後のメッセージは特に出ませんがファイルが作成されています。

.restoreコマンド

バックアップしたデータベースをレストア(復元)します。

sqlite> .restore <DB> <FILE>

これも.backupと同様にDBを省略した場合はmainとなります。FILEにはレストアするバックアップファイル名を指定します。ファイル名はフルパスで指定する事も可能です。

sqlite> .restore /Users/@@@@/hoge.sqlite.bk

実行後のメッセージは特に出ません。

.dumpコマンド

テーブルの構造なども含むデータベースに関する情報をSQL文の形式で出力します。

sqlite> .dump <TABLE>

TABLEを省略した場合はデータベースに関する全ての情報をダンプします。

sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE user(id int, name varchar(50), age int);
INSERT INTO "user" VALUES(1,'山田 太郎',35);
INSERT INTO "user" VALUES(2,'鈴木 花子',28);
INSERT INTO "user" VALUES(3,'佐藤 元気',42);
CREATE TABLE address(id int, post_no varchar(8), address varchar(50));
COMMIT;

.dumpコマンドだけでは画面に出力するのみになりますがファイルに出力したい場合は.outputコマンドを使います。

.outputコマンド

SELECT文など実行した時に画面に表示される結果をファイルに対して出力する事ができます。

sqlite> .output <FILENAME>

先ほどの.dumpコマンドと合わせて出力してみます。

sqlite> .output /Users/@@@@/hoge.sql
sqlite> .dump 
sqlite> less /Users/@@@@/hoge.sql
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE user(id int, name varchar(50), age int);
INSERT INTO "user" VALUES(1,'山田 太郎',35);
INSERT INTO "user" VALUES(2,'鈴木 花子',28);
INSERT INTO "user" VALUES(3,'佐藤 元気',42);
CREATE TABLE address(id int, post_no varchar(8), address varchar(50));
COMMIT;
/Users/@@@@/hoge.sql (END) 

ファイルが作成されて.dumpの結果が出力されていますね。 出力先をファイルから画面に戻したい場合は次のコマンドを実行します。

sqlite> .output stdout

.readコマンド

.dumpコマンドを使って作成したファイルは.readコマンドでインポートすることができます。

sqlite> .read <FILENAME>

FILENAMEにダンプファイル(自作したSQLファイルでもOK)を指定すると、ファイルをインポートしてファイルに書かれているSQL文を実行してくれます。

sqlite> .table  -- この時点ではtableが無い
sqlite> .read hoge.sql
sqlite> .table  -- SQLが実行されtableが作成される
address  user   
sqlite> select * from user;  -- データもinsertされる
1|山田 太郎|35
2|鈴木 花子|28
3|佐藤 元気|42

ダンプファイルの拡張子は分かり易く~.sqlとしましたが、~.txtでも大丈夫です。