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

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

Ответы [ 17 ]

15 голосов
/ 31 января 2013

Согласно документации , эквивалент SHOW TABLES; MySQLs равен:

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

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

11 голосов
/ 30 января 2009

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

Итак ... (предположим, что приглашение командной строки вашей ОС равно $) вместо $sqlite3:

sqlite3> ATTACH database.sqlite as "attached"

В командной строке вашей ОС откройте базу данных напрямую:

$sqlite3 database.sqlite
sqlite3> .dump
9 голосов
/ 14 октября 2016

С помощью union all объедините все таблицы в один список.

select name
from sqlite_master 
where type='table'

union all 

select name 
from sqlite_temp_master 
where type='table'
9 голосов
/ 13 октября 2015

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

import sqlite3

TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"
7 голосов
/ 03 апреля 2015

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

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

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

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

После загрузки щелкните файл sqlite3.exe, чтобы инициализировать командную оболочку SQLite . При инициализации по умолчанию этот сеанс SQLite использует базу данных в памяти, а не файл на диске, поэтому все изменения будут потеряны при выходе из сеанса. Чтобы использовать постоянный дисковый файл в качестве базы данных, введите команду ".open ex1.db" сразу после запуска окна терминала.

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

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

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

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

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

sqlite> create table_a (id int, a int, b int);
sqlite> .schema table_a
CREATE TABLE table_a (id int, a int, b int);
1 голос
/ 12 ноября 2017

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

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

ВЫБЕРИТЕ отличное имя tbl_name от порядка sqlite_master на 1;

Присоединенным базам данных нужны префиксы, которые вы выбрали с помощью AS в операторе ATTACH, например. aa (, bb, cc ...) так:

ВЫБРАТЬ отличное имя tbl_name от aa.sqlite_master упорядочить по 1;

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

...