Question Comment lister les tables dans un fichier de base de données SQLite ouvert avec ATTACH?


Quel SQL peut être utilisé pour lister les tables, et les lignes dans ces tables dans un fichier de base de données SQLite - une fois que je l'ai attaché avec le ATTACH commande sur l'outil de ligne de commande SQLite 3?


1017
2017-09-17 12:59


origine


Réponses:


le .tables, et .schema Les fonctions "helper" ne s'intéressent pas aux bases de données ATTACHED: elles SQLITE_MASTER table pour la base de données "principale". Par conséquent, si vous avez utilisé

ATTACH some_file.db AS my_db;

alors vous devez faire

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

Notez que les tables temporaires n'apparaissent pas avec .tables soit: vous devez lister sqlite_temp_master pour ça:

SELECT name FROM sqlite_temp_master WHERE type='table';

449
2017-09-17 13:30



Il y a quelques étapes pour voir les tables dans une base de données SQLite:

  1. Listez les tables dans votre base de données:

    .tables
    
  2. Liste comment la table ressemble:

    .schema tablename
    
  3. Imprimer le tableau entier:

    SELECT * FROM tablename;
    
  4. Répertoriez toutes les commandes d'invite SQLite disponibles:

    .help
    

1187
2017-09-17 13:02



Il semble que vous devez passer par le sqlite_master table, comme ceci:

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

Et puis passer manuellement à travers chaque table avec un SELECT ou similaire à regarder les lignes.

le .DUMP et .SCHEMA commandes ne semble pas voir la base de données du tout.


419
2017-09-17 13:01



Pour afficher toutes les tables, utilisez

SELECT name FROM sqlite_master WHERE type = "table"

Pour montrer toutes les lignes, je suppose que vous pouvez parcourir toutes les tables et faire un SELECT * sur chacune d'entre elles. Mais peut-être un DUMP est ce que vous cherchez?


138
2017-09-17 13:06



Utilisation .help vérifier les commandes disponibles.

.table

Cette commande afficherait toutes les tables sous votre base de données actuelle.


65
2017-08-31 04:13



Il y a une commande disponible pour cela sur la ligne de commande SQLite:

.tables ?PATTERN?      List names of tables matching a LIKE pattern

Qui convertit au SQL suivant:

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

36
2017-09-17 13:06



Pour lister les tables, vous pouvez également faire:

SELECT name FROM sqlite_master
WHERE type='table';

34
2017-09-17 13:04