2009-03-03 21 views

Trả lời

100

Điều bạn đang tìm kiếm được gọi là từ điển dữ liệu. Trong sqlite một danh sách tất cả các bảng có thể được tìm thấy bằng cách truy vấn bảng 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) 

Để có được thông tin cột mà bạn có thể sử dụng pragma table_info(table_name) statement (hoặc xem?):

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

Để biết thêm thông tin về pragma báo cáo, xem documentation.

+5

Tuyệt vời! Bây giờ làm thế nào điều này được thực hiện từ bên ngoài dòng lệnh? Làm thế nào điều này được thực hiện từ trong chương trình C của riêng tôi? –

+0

làm thế nào tôi có thể thực hiện giống như trên trong Mục tiêu-c –

+1

@Nag, tôi sẽ nghĩ bạn rằng SQLite chỉ nên coi các lệnh này là SQL bình thường, xử lý nó cho phù hợp và trả lại cho bạn một tập kết quả. –

16

chỉ cần đi vào vỏ sqlite của bạn:

$ sqlite3 path/to/db.sqlite3 

và sau đó chỉ cần nhấn

sqlite> .schema 

và bạn sẽ nhận được tất cả mọi thứ.

43

Đây là cách đơn giản:

.schema <table> 
+3

Điều này thực sự là câu trả lời. –

+10

@EhteshChoudhury không có nó không nên, câu hỏi yêu cầu một truy vấn SQL và đây không phải là một. – jazzpi

16

Câu hỏi đặt ra là cũ nhưng sau đã không được đề cập được nêu ra.

Một cách khác để thuận tiện trong nhiều trường hợp là để biến tiêu đề trên bằng cách:

sqlite> .headers on 

Sau đó,

sqlite> SELECT ... FROM table 

sẽ hiển thị một tiêu đề hiển thị tất cả các lĩnh vực được lựa chọn (tất cả nếu bạn SELECT *) tại đầu ra.

1

xây dựng trên trên, bạn có thể làm điều đó tất cả cùng một lúc:

sqlite3 yourdb.db ".schema" 

Điều đó sẽ cung cấp cho bạn các SQL để tạo ra các bảng, đó là một cách hiệu quả một danh sách các cột.

0

Tôi biết, đã lâu rồi nhưng chưa bao giờ quá muộn ... Tôi đã có một câu hỏi tương tự với TCL làm thông dịch viên và sau một vài tìm kiếm, không tìm thấy gì tốt cho tôi. Vì vậy, tôi đề nghị một cái gì đó dựa trên PRAGMA, biết rằng DB của bạn là “chính”

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

Và sử dụng mảng để có được một danh sách

set col_list {} 
db eval { PRAGMA main.table_info(<your table name>) } TBL { lappend col_list $TBL(name) } 
puts $col_list 
Các vấn đề liên quan