Как составить список таблиц в файле базы данных SQLite, который был открыт с помощью ATTACH? - PullRequest
1117 голосов
/ 17 сентября 2008

Какой SQL можно использовать для перечисления таблиц и строк в этих таблицах в файле базы данных SQLite - после того, как я прикрепил его с помощью команды ATTACH в инструменте командной строки SQLite 3?

Ответы [ 17 ]

1234 голосов
/ 17 сентября 2008

Существует несколько шагов для просмотра таблиц в базе данных SQLite:

  1. Список таблиц в вашей базе данных:

    .tables
    
  2. Список, как выглядит таблица:

    .schema tablename
    
  3. Распечатать всю таблицу:

    SELECT * FROM tablename;
    
  4. Список всех доступных команд приглашения SQLite:

    .help
    
527 голосов
/ 17 сентября 2008

Вспомогательные функции .tables и .schema не проверяют базы данных ATTACH: они просто запрашивают у таблицы 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';
433 голосов
/ 17 сентября 2008

Похоже, вам нужно просмотреть таблицу sqlite_master , например:

SELECT * FROM dbname.sqlite_master WHERE type='table';

А затем вручную просмотрите каждую таблицу с SELECT или подобным, чтобы посмотреть на строки.

Команды .DUMP и .SCHEMA вообще не отображаются в базе данных.

153 голосов
/ 17 сентября 2008

Чтобы показать все таблицы, используйте

SELECT name FROM sqlite_master WHERE type = "table"

Чтобы показать все строки, я думаю, вы можете перебрать все таблицы и просто сделать SELECT * для каждой из них. Но, возможно, вам нужен DUMP?

68 голосов
/ 31 августа 2011

Используйте .help для проверки доступных команд.

.table

Эта команда покажет все таблицы в вашей текущей базе данных.

40 голосов
/ 17 сентября 2008

Для этого в командной строке 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
36 голосов
/ 17 сентября 2008

Для просмотра таблиц вы также можете сделать:

SELECT name FROM sqlite_master
WHERE type='table';
29 голосов
/ 07 июня 2010

Попробуйте PRAGMA table_info(table-name);
http://www.sqlite.org/pragma.html#schema

19 голосов
/ 01 августа 2015

Я использую этот запрос, чтобы получить его:

SELECT name FROM sqlite_master WHERE type='table'

А для использования в iOS:

NSString *aStrQuery=[NSString stringWithFormat:@"SELECT name FROM sqlite_master WHERE type='table'"];
15 голосов
/ 09 сентября 2014

Начиная с последних версий SQLite 3, вы можете выдавать:

.fullschema

чтобы увидеть все ваши операторы создания.

...