17 ответов:
The
.tablesи.schema"вспомогательные" функции не заглядывают в прикрепленные базы данных: они просто запрашиваютSQLITE_MASTERтаблица для" основной " базы данных. Следовательно, если вы использовалиATTACH some_file.db AS my_db;затем вам нужно сделать
SELECT name FROM my_db.sqlite_master WHERE type='table';обратите внимание, что временные таблицы не появлялся с
.tablesлибо: вы должны перечислитьsqlite_temp_masterдля этого:SELECT name FROM sqlite_temp_master WHERE type='table';
есть несколько шагов, чтобы увидеть таблицы в базе данных SQLite:
список таблиц в базе:
.tablesсписок, как выглядит таблица:
.schema tablenameраспечатать всю таблицу:
SELECT * FROM tablename;Список всех доступных команд командной строки SQLite:
.help
похоже, вам нужно пройти через sqlite_master таблица, как это:
SELECT * FROM dbname.sqlite_master WHERE type='table';а затем вручную пройти через каждую таблицу с
SELECTили аналогично смотреть на строки.The
.DUMPи.SCHEMAкоманды, похоже, вообще не видят базу данных.
чтобы показать все таблицы, используйте
SELECT name FROM sqlite_master WHERE type = "table"чтобы показать все строки, Я думаю, вы можете перебирать все таблицы и просто сделать SELECT * на каждом из них. Но, может быть, свалка-это то, что вам нужно?
использовать
.helpдля проверки наличия доступных команд..tableэта команда покажет все таблицы в текущей базе данных.
существует команда, доступная для этого в командной строке SQLite:
.tables ?PATTERN? List names of tables matching a LIKE patternкоторый преобразуется в следующий SQL:
SELECT name FROM sqlite_master WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%' UNION ALL SELECT name FROM sqlite_temp_master WHERE type IN ('table','view') ORDER BY 1
чтобы перечислить таблицы, которые вы также можете сделать:
SELECT name FROM sqlite_master WHERE type='table';
попробуйте
PRAGMA table_info(table-name);
http://www.sqlite.org/pragma.html#schema
по словам документация, эквивалент MySQLs'
SHOW TABLES;- это:The".команда "таблицы" аналогична настройке режима списка, а затем выполняется следующий запрос:
SELECT name FROM sqlite_master WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%' UNION ALL SELECT name FROM sqlite_temp_master WHERE type IN ('table','view') ORDER BY 1;однако, если вы проверяете, существует ли одна таблица (или чтобы получить ее сведения), см. @LuizGeron ответ.
начиная с последних версий SQLite 3 Вы можете выдать:
.fullschemaчтобы увидеть все ваши инструкции create.
Я использую этот запрос, чтобы получить его:
SELECT name FROM sqlite_master WHERE type='table'и использовать в iOS:
NSString *aStrQuery=[NSString stringWithFormat:@"SELECT name FROM sqlite_master WHERE type='table'"];
самый простой способ сделать это, чтобы открыть базу данных напрямую и использовать
.dumpкоманда, а не прикрепление ее после вызова инструмента оболочки SQLite 3.так... (предположим, что ваша командная строка ОС -$) вместо
$sqlite3:sqlite3> ATTACH database.sqlite as "attached"из командной строки ОС откройте базу данных напрямую:
$sqlite3 database.sqlite sqlite3> .dump
через a
union all, объединить все таблицы в одном списке.select name from sqlite_master where type='table' union all select name from sqlite_temp_master where type='table'
поскольку никто не упомянул об официальной ссылке SQLite, я думаю, что может быть полезно обратиться к нему под этим заголовком:
https://www.sqlite.org/cli.html
вы можете управлять вашей базы данных с помощью команд, описанных в этой ссылке. Кроме того, если вы используете ОС Windows и не знаю, где находится командная оболочка, то есть на сайте SQLite:
https://www.sqlite.org/download.html
после его загрузки, щелкните sqlite3.exe-файл для инициализации командной оболочки SQLite. Когда он инициализирован, по умолчанию этот сеанс SQLite использует базу данных в памяти, а не файл на диске, и поэтому все изменения будут потеряны при завершении сеанса. Чтобы использовать постоянный дисковый файл в качестве базы данных, введите ".откройте ex1.команды DB" немедленно после того, как окно терминала начинается вверх.
приведенный выше пример вызывает файл базы данных с именем " ex1.db", который будет открыт и использован, и создан, если он ранее не существовал. Возможно, вы захотите использовать полный путь, чтобы убедиться, что файл находится в каталоге, в котором он находится. Используйте прямые косые черты в качестве символа разделителя каталогов. Другими словами используйте "c:/work/ex1.db", not "c:\work\ex1.децибел."
чтобы просмотреть все таблицы в ранее выбранной базе данных, введите команду .таблицы как это сказано в приведенной выше ссылке.
Если вы работаете в Windows, я думаю, что было бы полезно переместить этот sqlite.exe-файл в ту же папку с другими файлами Python. Таким образом, файл Python записывает и читает оболочку SQLite.файлы БД находятся в том же пути.
The ".схема " commando перечислит доступные таблицы и их строки, показывая вам инструкцию, используемую для создания указанных таблиц:
sqlite> create table_a (id int, a int, b int); sqlite> .schema table_a CREATE TABLE table_a (id int, a int, b int);
.да, чтобы увидеть все базы данных-один называется' main'
таблицы этой базы данных можно увидеть
выберите distinct tbl_name из sqlite_master порядка 1;
прикрепленные базы данных нуждаются в префиксах, которые вы выбрали, как в инструкции ATTACH например aa (, bb, cc...) Итак:
выберите distinct tbl_name из aa.sqlite_master заказ 1;
обратите внимание, что здесь вы получите также мнения. К исключить эти добавить где type = 'table' перед "заказом"
Comments