2009-03-03 21 views

Respuesta

100

Lo que está buscando se llama diccionario de datos. En sqlite una lista de todas las tablas se puede encontrar mediante la consulta de la tabla 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) 

Para obtener información de la columna se puede utilizar el pragma table_info(table_name) declaración (o ver?):

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

Para obtener más información sobre el pragma declaraciones, vea el documentation.

+5

Gran! Ahora, ¿cómo se hace esto desde fuera de la línea de comando? ¿Cómo se hace esto desde mi propio programa C? –

+0

cómo puedo implementar lo mismo que el anterior en Objective-c –

+1

@Nag, creo que SQLite debería tratar estos comandos como SQL ordinario, procesarlos en consecuencia y devolverle un conjunto de resultados. –

16

acaba de entrar en su concha sqlite:

$ sqlite3 path/to/db.sqlite3 

y luego acaba de golpear

sqlite> .schema 

y obtendrá todo.

43

Aquí es la forma más sencilla:

.schema <table> 
+3

Esto realmente debería ser la respuesta. –

+10

@EhteshChoudhury no, no debería, la pregunta pide una consulta SQL y esta no es una. – jazzpi

16

La pregunta es antiguo, pero los siguientes no se ha mencionado todavía.

Otra forma conveniente en muchos casos es convertir los encabezados de por:

sqlite> .headers on 

Entonces,

sqlite> SELECT ... FROM table 

mostrará un titular que muestra todos los campos seleccionados (todo si selecciona *) en el parte superior de la salida.

1

Sobre la base de lo anterior, se puede hacer todo a la vez:

sqlite3 yourdb.db ".schema" 

que le dará el código SQL para crear la tabla, que es efectivamente una lista de las columnas.

0

Lo sé, ha pasado mucho tiempo pero nunca es demasiado tarde ... Tuve una pregunta similar con TCL como intérprete y después de varias búsquedas, no encontré nada bueno para mí. Por eso propongo algo basado en PRAGMA, sabiendo que su base de datos es “principal”

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

Y el uso matriz para obtener una lista

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