2009-03-03 9 views
69

मैं एक तालिका में कॉलम की एक सूची पुनर्प्राप्त करने के लिए देख रहा हूँ। डेटाबेस SQLite की नवीनतम रिलीज है (3.6, मुझे विश्वास है)। मैं कोड ढूंढ रहा हूं जो SQL क्वेरी के साथ करता है। कॉलम से संबंधित मेटाडेटा के लिए अतिरिक्त बोनस अंक (उदा। लंबाई, डेटा प्रकार, आदि ...)SQLite डेटाबेस के लिए तालिका में कॉलम की सूची कैसे प्राप्त कर सकता हूं?

उत्तर

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) कथन का उपयोग कर सकते हैं (या देखने?): pragma पर

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

महान प्राप्त करने के लिए! अब यह कमांड लाइन के बाहर से कैसे किया जाता है? यह मेरे अपने सी प्रोग्राम के भीतर से कैसे किया जाता है? –

+0

मैं उद्देश्य-सी –

+1

@Nag में उपर्युक्त के रूप में कैसे कार्यान्वित कर सकता हूं, मुझे लगता है कि SQLite को इन आदेशों को सामान्य एसक्यूएल के रूप में देखना चाहिए, तदनुसार इसे संसाधित करना होगा, और आपको परिणाम सेट वापस कर देना चाहिए। –

16

सिर्फ अपने SQLite खोल में जाना:

$ sqlite3 path/to/db.sqlite3 

और फिर बस

sqlite> .schema 

मारा और तुम सब कुछ मिल जाएगा।

.schema <table> 
43

यहाँ सरल तरीका है।

sqlite> .headers on 

फिर,

sqlite> SELECT ... FROM table 

(सभी अगर आप * का चयन करें) सभी चयनित क्षेत्र दर्शाती एक शीर्षक प्रदर्शित करेगा:

कई मामलों में एक और सुविधाजनक तरीका द्वारा पर हेडर चालू करने के लिए है आउटपुट के शीर्ष।

+3

यह वास्तव में जवाब होना चाहिए। –

+10

@EhteshChoudhury नहीं, यह सवाल नहीं होना चाहिए, सवाल एक एसक्यूएल क्वेरी के लिए पूछता है और यह एक नहीं है। – jazzpi

16

सवाल पुराना है, लेकिन निम्नलिखित अभी तक का उल्लेख नहीं किया गया है:

1

बिल्डिंग के ऊपर पर, आप इसे एक ही बार में कर सकते हैं:

sqlite3 yourdb.db ".schema" 

कि तुम मेज, जो प्रभावी रूप से कॉलम की एक सूची बनाने के लिए एसक्यूएल दे देंगे।

0

मुझे पता है, यह बहुत लंबा रहा है लेकिन यह बहुत देर हो चुकी नहीं है ... मेरे पास टीसीएल के साथ दुभाषिया के रूप में एक समान सवाल था और कई खोजों के बाद, मेरे लिए कुछ भी अच्छा नहीं मिला। इसलिए मैं 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 
संबंधित मुद्दे

 संबंधित मुद्दे