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



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

3698   17  

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:

  1. список таблиц в базе:

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

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

    SELECT * FROM tablename;
    
  4. Список всех доступных команд командной строки 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

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

import sqlite3

TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"

через 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

    Ничего не найдено.