Есть ли SQLite, эквивалентный MySQL DESCRIBE [таблица]? - PullRequest
413 голосов
/ 25 июля 2010

Я только начинаю изучать SQLite .Было бы неплохо увидеть детали таблицы, например, MySQL DESCRIBE [table].PRAGMA table_info [table] недостаточно хорош, поскольку содержит только основную информацию (например, он не показывает, является ли столбец каким-либо полем или нет).Есть ли у SQLite способ сделать это?

Ответы [ 5 ]

538 голосов
/ 25 июля 2010

Утилита командной строки SQLite имеет команду .schema TABLENAME, которая показывает операторы создания.

274 голосов
/ 06 октября 2011
PRAGMA table_info([tablename]);
111 голосов
/ 25 июля 2010

Вы ищете SQL, используемый для генерации таблицы?Для этого вы можете запросить таблицу sqlite_master :

sqlite> CREATE TABLE foo (bar INT, quux TEXT);
sqlite> SELECT * FROM sqlite_master;
table|foo|foo|2|CREATE TABLE foo (bar INT, quux TEXT)
sqlite> SELECT sql FROM sqlite_master WHERE name = 'foo';
CREATE TABLE foo (bar INT, quux TEXT)
52 голосов
/ 25 июля 2010

Чтобы увидеть все таблицы:

.tables

Чтобы увидеть конкретную таблицу:

.schema [tablename]
6 голосов
/ 14 февраля 2015

Чтобы не дать людям ввести в заблуждение некоторые комментарии к другим ответам:

  1. Если .schema или query from sqlite_master не дает никакого вывода, это указывает на несуществующий tablenameНапример, это также может быть вызвано точкой с запятой ; в конце для .schema, .tables, ... Или просто потому, что таблица действительно не существует.То, что .schema просто не работает, очень маловероятно, и тогда отчет об ошибке должен быть подан в проект sqlite.

... .schema может использоваться только из командной строки;вышеуказанные команды> могут быть запущены как запрос через библиотеку (Python, C # и т. д.).- Марк Рушаков 25 июля 2010 года в 21:09

«может использоваться только из командной строки» может ввести в заблуждение людей.Практически любой (вероятно, любой?) Язык программирования может вызывать другие программы / команды.Поэтому цитируемый комментарий неудачен, поскольку вызов другой программы, в данном случае sqlite, с большей вероятностью будет поддерживаться, чем то, что язык предоставляет wrapper / library для каждой программы (которая не только подвержена незавершенностиСама природа масс программ существует, но также противодействует single-source principle, усложняя maintenance, продвигая хаос данных в мире).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...