Как составить список таблиц в файле базы данных SQLite, который был открыт с помощью ATTACH?

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

Комментарии к вопросу (4)

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

  1. Перечислите таблицы в вашей базе данных:

    .tables

  2. Перечислите, как выглядит таблица:

    .schema tablename

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

    SELECT * FROM tablename;

  4. Перечислите все доступные оперативные команды SQLite:

    .help

Комментарии (7)
Решение

Этот .таблицы "и".схемы в "помощник" по функциям Дон'т посмотри в подключенных базах данных: они просто запрашивают `SQLITE_MASTER таблица для глаз "Главное" база данных. Следовательно, если вы использовали

ATTACH some_file.db AS my_db;

тогда вам нужно сделать

SELECT name FROM my_db.sqlite_master WHERE type='table';

Обратите внимание, что временные таблицы не'т показать вверх с .таблиц: вы должны перечислитьsqlite_temp_master` для этого:

SELECT name FROM sqlite_temp_master WHERE type='table';
Комментарии (5)

Похоже, что вам нужно пройти через таблицу sqlite_master, как показано ниже:

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

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

Команды .DUMP и .SCHEMA, похоже, вообще не видят базу данных.

Комментарии (7)

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

SELECT name FROM sqlite_master WHERE type = "table"

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

Комментарии (2)

Использование `."помощь", чтобы проверить доступные команды.

.table

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

Комментарии (4)

Есть команда для этого в командной строке базы данных 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
Комментарии (0)

Чтобы перечислить таблицы, вы также можете сделать это:

SELECT name FROM sqlite_master
WHERE type='table';
Комментарии (0)

Попробуйте в Pragma table_info(таблица-имя);` http://www.sqlite.org/pragma.html#schema

Комментарии (2)

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

SELECT name FROM sqlite_master WHERE type='table'

И использовать в iOS:

NSString *aStrQuery=[NSString stringWithFormat:@"SELECT name FROM sqlite_master WHERE type='table'"];
Комментарии (0)

Согласно документации, что эквивалентно MySQLs' показать таблицы; это:

в ".столы" и команда аналогична настройке в режиме списка после выполнения следующий запрос:

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 Ответ.

Комментарии (0)

В последних версиях SQLite и усилителя;усилитель; nbsp;3 Вы можете оформить:

.fullschema

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

Комментарии (2)

Самый простой способ сделать это, чтобы открыть базу данных напрямую и использовать.команда dump`, а не прикреплять его после вызова SQLite и усилителя;усилитель; nbsp;инструмент 3 оболочки.

Так что... (предположим командной строки ОС подскажут составляет $) Вместо $и sqlite3:

sqlite3> ATTACH database.sqlite as "attached"

Из командной строки операционной системы, откройте базу данных напрямую:

$sqlite3 database.sqlite
sqlite3> .dump
Комментарии (0)

Использование:

import sqlite3

TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"
Комментарии (0)

Через Союз, объединить все таблицы в одном списке.

select name
from sqlite_master 
where type='table'

union all 

select name 
from sqlite_temp_master 
where type='table'
Комментарии (0)

Поскольку никто не упомянул об официальном ведения базы данных SQLite, я думаю, что это может быть полезно обратиться к нему по этому разделу:

https://www.sqlite.org/cli.html

Вы можете управлять вашей базы данных с помощью команд, описанных в этой ссылке. Кроме того, если вы используете ОС Windows и не знаю, где в командной оболочке, то есть в программе SQLite'с сайта:

https://www.sqlite.org/download.html

После его загрузки, нажмите Файл sqlite3.exe для инициализации командной оболочки данных SQLite. Когда он инициализируется по умолчанию этот файл SQLite сеанс с использованием базы данных в памяти, а не файл на диске, и поэтому все изменения будут потеряны, когда сеанс завершается. Использование стойких дисковый файл в качестве базы данных, войти в ".открытие ех1.БД" в команду сразу после окна запуска.

Приведенный выше пример вызывает файл базы данных по кличке "ех1.БД", чтобы быть открыты и использованы, и создан, если он еще не существует. Возможно, вы захотите использовать полный путь, чтобы убедиться, что файл находится в каталоге, что вы думаете по. Использовать косую черту в качестве разделителя каталогов характер. Другими словами, использовать и"c:/work/ex1.db", не то "c:\work\ex1.db".

Чтобы увидеть все таблицы в базе данных вы уже выбрали, наберите команду .таблицы как сказано в ссылке выше.

Если вы работаете в Windows, я думаю, было бы полезно перенести этот файл sqlite.exe в одной папке с остальными файлов Python. Таким образом, файл на языке Python пишет и на SQLite оболочки читает .файлы БД в один и тот же путь.

Комментарии (0)

В ".схемы и" коммандос будет список доступных таблиц и их рядами, показывая вам заявление, используемое для создания таблиц сказал:

в <предварительно> данных SQLite> создавать table_a (ИД инт в инт, инт б); данных SQLite> .table_a схемы Создать таблица table_a (ИД инт в инт, инт б); </пред>

Комментарии (0)

.да, чтобы увидеть все базы данных - одна называется 'основные'

таблицы этой базы данных можно увидеть

Выбрать различные tbl_name оператор от того sqlite_master по 1;

Подключенных баз данных нужны префиксы, которые вы выбрали с, так как в инструкции прикрепить, например, АА (, ВВ, СС...) так:

Выбрать различные tbl_name оператор от АА.sqlite_master заказ 1;

Обратите внимание, что здесь вы получите также мнения. Чтобы исключить эти добавить где тип = 'таблица' до ' заказа'

Комментарии (0)