Как я могу получить список столбцов в таблице базы данных SQLite?
Я ищу, чтобы получить список столбцов в таблице. База данных является последним выпуском SQLite (3.6, я считаю). Я ищу код, который делает это с помощью SQL-запроса. Дополнительные бонусные баллы за метаданные, связанные со столбцами (например, длина, тип данных и т. д...)
7 ответов:
то, что вы ищете называется словарем данных. В 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)о себе:sqlite> pragma table_info(people); 0|first_name|varchar|0||0 1|last_name|varchar|0||0 2|email_address|varchar|0||0дополнительные сведения о операторах pragma см. В разделе документация.
просто зайдите в свою оболочку sqlite:
$ sqlite3 path/to/db.sqlite3а потом просто ударил
sqlite> .schemaи вы получите все.
вопрос старый, но следующее еще не упоминалось.
еще один удобный способ во многих случаях, чтобы включить заголовки:
sqlite> .headers onзатем,
sqlite> SELECT ... FROM tableотобразит заголовок, показывающий все выбранные поля (все, если вы выберете *) в верхней части вывода.
вот инструкция SELECT, в которой перечислены все таблицы и столбцы в текущей базе данных:
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 ;
исходя из вышеизложенного, вы можете сделать это все сразу:
sqlite3 yourdb.db ".schema"Это даст вам SQL для создания таблицы, которая фактически является списком столбцов.
Я знаю, это было давно, но никогда не поздно… У меня был аналогичный вопрос с TCL в качестве переводчика и после нескольких поисков, не нашел ничего хорошего для меня. Поэтому я предлагаю что-то на основе PRAGMA, зная, что ваша БД является "main"
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
Comments