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

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

вопрос задан 17.09.2008
izb
23299 репутация

17 ответов


  • 0 рейтинг

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

    .table
    

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

    ответ дан Antony.H, с репутацией 820, 31.08.2011
  • 0 рейтинг

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

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

    sqlite3> ATTACH database.sqlite as "attached"
    

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

    $sqlite3 database.sqlite
    sqlite3> .dump
    
    ответ дан Noah, с репутацией 11030, 30.01.2009
  • 0 рейтинг

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

    select name
    from sqlite_master 
    where type='table'
    
    union all 
    
    select name 
    from sqlite_temp_master 
    where type='table'
    
    ответ дан openwonk, с репутацией 5574, 13.10.2016
  • 0 рейтинг

    Попробуйте PRAGMA table_info(table-name);
    http: // www. SQLite. орг / Прагма. html # схема

    ответ дан Luiz Geron, с репутацией 893, 7.06.2010
  • 0 рейтинг

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

    import sqlite3
    
    TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"
    
    ответ дан Mrityunjay Singh, с репутацией 308, 13.10.2015
  • 0 рейтинг

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

    SELECT name FROM sqlite_master WHERE type='table'
    

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

    NSString *aStrQuery=[NSString stringWithFormat:@"SELECT name FROM sqlite_master WHERE type='table'"];
    
    ответ дан GameLoading, с репутацией 5500, 1.08.2015
  • 0 рейтинг

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

    https: // www. SQLite. орг / кли. HTML

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

    https: // www. SQLite. орг / скачать. HTML

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

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

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

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

    ответ дан oiyio, с репутацией 1024, 2.04.2015
  • 0 рейтинг

    В соответствии с документацией , эквивалент SHOW TABLES; MySQL:

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

    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 .

    ответ дан Alix Axel, с репутацией 104416, 31.01.2013
  • 0 рейтинг

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

    .fullschema
    

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

    ответ дан pepper, с репутацией 928, 8.09.2014
  • 0 рейтинг

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

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

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

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

    ВЫБЕРИТЕ отличное имя_таблицы от аа. sqlite_master заказ по 1;

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

    ответ дан Klaas-Z4us-V, с репутацией 37, 12.11.2017
  • 0 рейтинг

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

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

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

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

    ответ дан Lasse Vågsæther Karlsen, с репутацией 279998, 17.09.2008
  • 0 рейтинг

    Есть несколько шагов, чтобы увидеть таблицы в базе данных SQLite:

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

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

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

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

      .help
      
    ответ дан Mark Janssen, с репутацией 12287, 17.09.2008
  • 0 рейтинг

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

    SELECT name FROM sqlite_master
    WHERE type='table';
    
    ответ дан Rafał Dowgird, с репутацией 30422, 17.09.2008
  • 0 рейтинг

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

    sqlite> create table_a (id int, a int, b int);
    sqlite> .schema table_a
    CREATE TABLE table_a (id int, a int, b int);
    
    ответ дан Rafał Dowgird, с репутацией 30422, 17.09.2008
  • 0 рейтинг

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

    SELECT name FROM sqlite_master WHERE type = "table"
    

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

    ответ дан Christian Davén, с репутацией 9299, 17.09.2008
  • 0 рейтинг

    Для этого в командной строке 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
    
    ответ дан Christian Davén, с репутацией 9299, 17.09.2008
  • 0 рейтинг

    «Вспомогательные» функции .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';
    
    ответ дан Anthony Williams, с репутацией 50401, 17.09.2008