2009-03-03 11 views

Odpowiedz

100

To, czego szukasz, to słownik danych. W SQLite listę wszystkich tabel można znaleźć poprzez odpytywanie tabeli 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) 

Aby uzyskać informacje kolumny można użyć instrukcji pragma table_info(table_name) (lub obejrzeć):

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

Aby uzyskać więcej informacji na temat Pragma oświadczenia, patrz: documentation.

+5

Great! Jak to zrobić z poziomu wiersza poleceń? Jak to zrobić z mojego własnego programu C? –

+0

jak mogę zaimplementować to samo co powyżej w Objective-c –

+1

@Nag, sądzę, że SQLite powinien traktować te polecenia jak zwykły SQL, przetwarzać je odpowiednio i zwracać zestaw wyników. –

16

po prostu pójść do swojej skorupy sqlite:

$ sqlite3 path/to/db.sqlite3 

a potem po prostu hit

sqlite> .schema 

a dostaniesz wszystko.

43

Oto prosty sposób:

.schema <table> 
+3

To naprawdę powinna być odpowiedź. –

+10

@EhteshChoudhury nie, nie powinno, pytanie prosi o kwerendę SQL, a to nie jest jedna. – jazzpi

16

Pytanie jest stary, ale po nie zostały jeszcze wymienione.

Innym wygodny sposób w wielu przypadkach jest przekształcenie nagłówków przez:

sqlite> .headers on 

Następnie,

sqlite> SELECT ... FROM table 

wyświetli nagłówek pokazujący wszystkie wybrane pola (wszystko jeśli SELECT *) u góra wyjścia.

1

Opierając się na powyższym, można zrobić to wszystko naraz:

sqlite3 yourdb.db ".schema" 

To daje SQL do tworzenia tabeli, która jest skutecznie lista kolumn.

0

Wiem, minęło dużo czasu, ale nigdy nie jest za późno ... Miałem podobne pytanie z TCL jako tłumaczem, a po kilku przeszukaniach nie znalazłem nic dobrego dla mnie. Więc proponuję coś w oparciu o Pragma, wiedząc, że DB jest „głównym”

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

i używać tablicy, aby uzyskać listę

set col_list {} 
db eval { PRAGMA main.table_info(<your table name>) } TBL { lappend col_list $TBL(name) } 
puts $col_list 
Powiązane problemy