2009-03-03 90 views

回答

100

您正在查找的內容稱爲數據字典。 SQLite中所有表的列表可通過查詢SQLITE_MASTER表中找到

sqlite> create table people (first_name varchar, last_name varchar, email_address varchar); 
sqlite> select * from sqlite_master; 
table|people|people|2|CREATE TABLE people (first_name varchar, last_name varchar, email_address varchar) 

要獲取列信息,您可以使用pragma table_info(table_name)聲明(或查看):

sqlite> pragma table_info(people); 
0|first_name|varchar|0||0 
1|last_name|varchar|0||0 
2|email_address|varchar|0||0 

欲瞭解更多關於該編譯報表,請參閱documentation

+5

太好了!現在這是如何從命令行外部完成的?這是如何在我自己的C程序中完成的? – 2013-09-27 13:56:14

+0

我如何在Objective-c – 2014-05-20 09:27:25

16

剛剛進入你的sqlite的外殼:

$ sqlite3 path/to/db.sqlite3 

,然後只打

sqlite> .schema 

,你會得到一切。

43

這裏的簡單的方法:

.schema <table> 
16

的問題是舊的,但以下尚未提及。

在許多情況下,另一種方便的方法是打開的標題:

sqlite> .headers on 

然後,

sqlite> SELECT ... FROM table 

將顯示出所有選定字段標題(所有的,如果你選擇*)在輸出的頂部。

1

樓以上,你可以一次做這一切:

sqlite3 yourdb.db ".schema" 

這會給你的SQL創建表,這是有效的列的列表。

0

我知道,這已經很長時間了,但它永遠不會太晚... 我和TCL有類似的問題作爲解釋器,經過幾次搜索後,發現對我來說沒有好處。所以,我提出了一種基於PRAGMA東西,知道你的數據庫是「主」

db eval { PRAGMA main.table_info(<your table name>) } TBL { puts $TBL(name) } 

而且陣列中使用,以獲得一個列表

set col_list {} 
db eval { PRAGMA main.table_info(<your table name>) } TBL { lappend col_list $TBL(name) } 
puts $col_list 
相關問題