Как перечислить таблицы в файле базы данных SQLite, который был открыт с помощью ATTACH?
Какой SQL можно использовать для отображения таблиц и строк в этих таблицах в файле базы данных SQLite - как только я присоединю его с помощью команды ATTACH
в инструменте командной строки SQLite 3?
Ответы
Ответ 1
Функции .tables
и .schema
"helper" не рассматривают базы данных ATTACHed: они просто запрашивают таблицу 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';
Ответ 2
Есть несколько шагов, чтобы увидеть таблицы в базе данных SQLite:
-
Список таблиц в вашей базе данных:
.tables
-
Перечислите, как выглядит таблица:
.schema tablename
-
Распечатайте всю таблицу:
SELECT * FROM tablename;
-
Перечислите все доступные команды командной строки SQLite:
.help
Ответ 3
Кажется, вам нужно пройти через таблицу sqlite_master, например:
SELECT * FROM dbname.sqlite_master WHERE type='table';
И затем вручную пройдите через каждую таблицу с помощью SELECT
или аналогично, чтобы посмотреть на строки.
Команды .DUMP
и .SCHEMA
вообще не отображаются в базе данных.
Ответ 4
Чтобы показать все таблицы, используйте
SELECT name FROM sqlite_master WHERE type = "table"
Чтобы показать все строки, я думаю, вы можете проходить через все таблицы и просто делать SELECT * на каждом из них. Но, возможно, DUMP - это то, что вам нужно?
Ответ 5
Используйте .help
для проверки доступных команд.
.table
Эта команда будет отображать все таблицы в вашей текущей базе данных.
Ответ 6
В командной строке 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
Ответ 7
Чтобы перечислить таблицы, вы также можете:
SELECT name FROM sqlite_master
WHERE type='table';
Ответ 8
Попробуйте PRAGMA table_info(table-name);
http://www.sqlite.org/pragma.html#schema
Ответ 9
В соответствии с документацией эквивалент MySQL SHOW TABLES;
:
Команда ".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.
Ответ 10
По последним версиям SQLite 3 вы можете указать:
.fullschema
чтобы увидеть все ваши операторы создания.
Ответ 11
Я использую этот запрос для его получения:
SELECT name FROM sqlite_master WHERE type='table'
И использовать в iOS:
NSString *aStrQuery=[NSString stringWithFormat:@"SELECT name FROM sqlite_master WHERE type='table'"];
Ответ 12
Самый простой способ сделать это - открыть базу данных напрямую и использовать команду .dump
, а не прикреплять ее после вызова инструмента оболочки SQLite 3.
Итак... (предположим, что приглашение командной строки вашей ОС равно $) вместо $sqlite3
:
sqlite3> ATTACH database.sqlite as "attached"
В командной строке ОС откройте базу данных напрямую:
$sqlite3 database.sqlite
sqlite3> .dump
Ответ 13
Использование:
import sqlite3
TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"
Ответ 14
Через union all
объедините все таблицы в один список.
select name
from sqlite_master
where type='table'
union all
select name
from sqlite_temp_master
where type='table'
Ответ 15
Поскольку никто не упомянул об официальной ссылке 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 файлов, находится в одном и том же пути.
Ответ 16
Команда .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);
Ответ 17
.da, чтобы увидеть все базы данных - один из них называется main '
таблицы этой базы данных можно увидеть
ВЫБРАТЬ отдельное имя tbl_ из заказа sqlite_master на 1;
Прилагаемые базы данных требуют префиксов, которые вы выбрали с помощью AS в инструкции ATTACH, например. aa (, bb, cc...) так:
Выберите отдельное имя tbl_ из aa.sqlite_master по 1;
Обратите внимание, что здесь вы также получаете представления. Чтобы исключить их, добавьте , где type = 'table'
до 'заказа'