標籤:
工欲善其事,必先利其器。學好SQLite的命令列工具,對於我們學習SQLite本身而言是非常非常有協助的。最基本的一條就是,它讓我們學習SQLite的過程更加輕鬆愉快。言歸正傳吧,在SQLite的官方下載網站,提供了支援多個平台的命令列工具,使用該工具我們可以完成大多數常用的SQLite操作,就像sqlplus之於Oracle。以下列表給出了該工具的內建命令:
命令名 |
命令說明 |
.help |
列出所有內建命令。 |
.backup DBNAME FILE |
備份指定的資料庫到指定的檔案,預設為當前串連的main資料庫。 |
.databases |
列出當前串連中所有attached資料庫名和檔案名稱。 |
.dump TABLENAME ... |
以SQL文本的格式DUMP當前串連的main資料庫,如果指定了表名,則只是DUMP和表名匹配的資料表。參數TABLENAME支援LIKE運算式支援的萬用字元。 |
.echo ON|OFF |
開啟或關閉顯示輸出。 |
.exit |
退出當前程式。 |
.explain ON|OFF |
開啟或關閉當前串連的SELECT輸出到Human Readable形式。 |
.header(s) ON|OFF |
在顯示SELECT結果時,是否顯示列的標題。 |
.import FILE TABLE |
匯入指定檔案的資料到指定表。 |
.indices TABLENAME |
顯示所有索引的名字,如果指定表名,則僅僅顯示匹配該表名的資料表的索引,參數TABLENAME支援LIKE運算式支援的萬用字元。 |
.log FILE|off |
開啟或關閉日誌功能,FILE可以為標準輸出stdout,或標準錯誤輸出stderr。 |
.mode MODE TABLENAME |
設定輸出模式,這裡最為常用的模式是column模式,使SELECT輸出資料行靠左對齊顯示。 |
.nullvalue STRING |
使用指定的字串代替NULL值的顯示。 |
.output FILENAME |
將當前命令的所有輸出重新導向到指定的檔案。 |
.output stdout |
將當前命令的所有輸出重新導向到標準輸出(螢幕)。 |
.quit |
退出當前程式。 |
.read FILENAME |
執行指定檔案內的SQL語句。 |
.restore DBNAME FILE |
從指定的檔案還原資料庫,預設為main資料庫,此時也可以指定其它資料庫名,被指定的資料庫成為當前串連的attached資料庫。 |
.schema TABLENAME |
顯示資料表的建立語句,如果指定表名,則僅僅顯示匹配該表名的資料表建立語句,參數TABLENAME支援LIKE運算式支援的萬用字元。 |
.separator STRING |
改變輸出模式和.import的欄位間分隔字元。 |
.show |
顯示各種設定的當前值。 |
.tables TABLENAME |
列出當前串連中main資料庫的所有表名,如果指定表名,則僅僅顯示匹配該表名的資料表名稱,參數TABLENAME支援LIKE運算式支援的萬用字元。 |
.width NUM1 NUM2 ... |
在MODE為column時,設定各個欄位的寬度,注意:該命令的參數順序表示欄位輸出的順序。 |
見如下常用樣本:
1). 備份與還原資料庫。
--在當前串連的main資料庫中建立一個資料表,之後再通過.backup命令將mainDatabase Backup到D:/mydb.db檔案中。
sqlite> CREATE TABLE mytable (first_col integer);
sqlite> .backup ‘D:/mydb.db‘
sqlite> .exit
--通過在命令列視窗下執行sqlite3.exe以重建立立和SQLite的串連。
--從備份檔案D:/mydb.db中恢複資料到當前串連的main資料庫中,再通過.tables命令可以看到mytable表。
sqlite> .restore ‘D:/mydb.db‘
sqlite> .tables
mytable
2). DUMP資料表的建立語句到指定檔案。
--先將命令列當前的輸出重新導向到D:/myoutput.txt,之後在將之前建立的mytable表的聲明語句輸出到該檔案。
sqlite> .output D:/myoutput.txt
sqlite> .dump mytabl%
sqlite> .exit
--在DOS環境下用記事本開啟目標檔案。
D:\>notepad myoutput.txt
3). 顯示當前串連的所有Attached資料庫和main資料庫。
sqlite> ATTACH DATABASE ‘D:/mydb.db‘ AS mydb;
sqlite> .databases
seq name file
--- --------------- ------------------------
0 main
2 mydb D:\mydb.db
4). 顯示main資料庫中的所有資料表。
sqlite> .tables
mytable
5). 顯示匹配表名mytabl%的資料表的所有索引。
sqlite> CREATE INDEX myindex on mytable(first_col);
sqlite> .indices mytabl%
myindex
6). 顯示匹配表名mytable%的資料表的Schema資訊。
--依賴該表的索引資訊也被輸出。
sqlite> .schema mytabl%
CREATE TABLE mytable (first_col integer);
CREATE INDEX myindex on mytable(first_col);
7). 格式化顯示SELECT的輸出資訊。
--插入測試資料
sqlite> INSERT INTO mytable VALUES(1);
sqlite> INSERT INTO mytable VALUES(2);
sqlite> INSERT INTO mytable VALUES(3);
--請注意沒有任何設定時SELECT結果集的輸出格式。
sqlite> SELECT * FROM mytable;
1
2
3
--顯示SELECT結果集的列名。
--以列的形式顯示各個欄位。
--將其後輸出的第一列顯示寬度設定為10.
sqlite> .header on
sqlite> .mode column
sqlite> .width 10
sqlite> SELECT * FROM mytable;
first_col
----------
1
2
3
SQLite學習手冊(命令列工具)