Soru Bir SQLite veritabanı için bir tablodaki sütunların listesini nasıl alabilirim?


Tablodaki sütunların listesini almak istiyorum. Veritabanı SQLite'nin en son sürümüdür (3.6, inanıyorum). Bunu bir SQL sorgusuyla yapan kodu arıyorum. Sütunlarla ilgili meta veri için ekstra bonus puanları (ör. Uzunluk, veri türü, vb.)


77
2018-03-03 02:59


Menşei




Cevaplar:


Aradığınız şey veri sözlüğü olarak adlandırılır. Sqlite'de, tüm tabloların listesini sqlite_master tablosunu sorgulayarak bulabilirsiniz (veya?)

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)

Sütun bilgilerini almak için pragma table_info(table_name) Beyan:

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

Pragma ifadeleri hakkında daha fazla bilgi için bkz. belgeleme.


109
2018-03-03 03:04



Harika! Şimdi bu komutun dışından nasıl yapılır? Bu kendi C programımın içinden nasıl yapılır? - Aaron Bratcher
Yukarıdaki gibi Objective-c'de nasıl uygulayabilirim - Nag Raj
@Nag, SQLite bu komutları sıradan SQL olarak ele almalı, buna göre işlem yapmalı ve bir sonuç setini döndürmeliyiz. - Bryan Kyle
k thanq @BryanKyle - Nag Raj
sqlite yerine nokta-kısayolu var select * from ? - jiggunjer


İşte basit bir yol:

.schema <table>

43
2018-02-10 04:52



Bu gerçekten cevap olmalı. - Ehtesh Choudhury
@EhteshChoudhury hayır yapmamalı, soru bir SQL sorgusu istiyor ve bu bir değil. - jazzpi


sadece sqlite kabuğuna git:

$ sqlite3 path/to/db.sqlite3

ve sonra sadece vur

sqlite> .schema

ve her şeyi alacaksın.


16
2018-03-03 03:13



Soru bir SQL sorgusu arıyor. - Erica


Soru eski ama şu ana kadar bahsedilmemiş.

Birçok durumda, bir başka uygun yol da, üstbilgileri şu şekilde açmaktır:

sqlite> .headers on

Sonra,

sqlite> SELECT ... FROM table

Çıktının üstünde seçilen tüm alanları (SELECT * ise) gösteren bir başlık gösterecektir.


15
2017-11-21 14:43





Geçerli veritabanındaki tüm tabloları ve sütunları listeleyen bir SELECT ifadesi:

SELECT m.name as tableName, 
       p.name as columnName
FROM sqlite_master m
left outer join pragma_table_info((m.name)) p
     on m.name <> p.name
order by tableName, columnName
;

3
2018-05-27 02:14





Yukarıdakiler üzerinde, hepsini aynı anda yapabilirsiniz:

sqlite3 yourdb.db ".schema"

Bu, etkili bir sütunların listesi olan tabloyu oluşturmak için SQL'i verecektir.


0
2018-04-27 16:50





Biliyorum, uzun zaman oldu ama asla geç değil. Tercüman olarak TCL ile benzer bir sorum vardı ve birkaç aramadan sonra benim için hiçbir şey bulamadım. Bu yüzden, PRAGMA'ya dayanarak DB'nizin “ana” olduğunu bilerek bir şey öneriyorum.

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

Liste almak için dizi kullanımı

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

0
2017-07-15 08:56