1285 votes

Comment puis-je lister les tables d'un fichier de base de données SQLite qui a été ouvert avec ATTACH ?

Quel langage SQL peut-on utiliser pour dresser la liste des tables et des lignes de ces tables dans un fichier de base de données SQLite - une fois que je l'ai joint avec l'option ATTACH dans l'outil de ligne de commande de SQLite 3 ?

1 votes

Essayez celui-ci, vous avez toutes les informations sur les tables http://www.sqlite.org/pragma.html#schema

3 votes

Ce qui suit est une interface graphique utile pour sqlite si vous êtes intéressé : sqlitestudio.pl Il vous permet de visualiser les détails des bases de données, des tables, très rapidement et dispose également d'un éditeur de requêtes agréable...

19 votes

.tables pour les tables et .schema ?TABLE? pour le schéma de la table spécifique.

1317voto

Mark Janssen Points 6155

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

  1. Dressez la liste des tables de votre base de données :

    .tables
  2. Indiquez à quoi ressemble la table :

    .schema tablename
  3. Imprimer le tableau entier :

    SELECT * FROM tablename;
  4. Liste de toutes les commandes SQLite disponibles à l'invite :

    .help

49 votes

.table y .tables sont toutes deux autorisées. D'ailleurs, .ta fonctionnerait également, puisque sqlite3 acceptera toute commande non ambiguë. Le nom de la commande selon l'aide est en effet ".tables" (si quelqu'un fait encore attention).

32 votes

(Cela devrait être la réponse acceptée, c'est la façon la plus pratique de faire les choses).

8 votes

.tables n'affichera pas les tables si l'on a ouvert la ou les bases de données par l'intermédiaire de l'application ATTACH '<path>' AS <name>; mais la réponse de lasse fera l'affaire. étant donné que le PO a mentionné l'ATTACHEMENT, je pense qu'il a eu raison de ne pas accepter cette réponse. edit : je viens de remarquer qu'anthony et d'autres personnes ci-dessous l'ont également signalé.

641voto

Anthony Williams Points 28904

Le site .tables y .schema Les fonctions "d'aide" ne consultent pas les bases de données ATTACHÉES : elles interrogent simplement la base de données de l'entreprise. SQLITE_MASTER 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 la fonction .tables soit : vous devez énumérer sqlite_temp_master pour ça :

SELECT name FROM sqlite_temp_master WHERE type='table';

147 votes

Seulement "SELECT name FROM sqlite_master WHERE type='table'" fonctionne pour moi

6 votes

SELECT name FROM my_db.sqlite_master WHERE type='table' ; cela ne fonctionne pas pour moi (pour la BD ci-jointe) et il y a une erreur comme : no such table exist "my_db.sqlite_master".

0 votes

Ce que vous entendez par tables temporaires ? Y en a-t-il lorsque je viens d'ouvrir un fichier db SQLite ?

450voto

Lasse V. Karlsen Points 148037

Il semble que vous deviez passer par le sqlite_master comme ceci :

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

Et ensuite passer manuellement par chaque table avec un SELECT ou similaire pour regarder les rangs.

Le site .DUMP y .SCHEMA Les commandes ne semblent pas voir la base de données du tout.

122 votes

Ce n'est pas quelque chose de facile à lire ou à mémoriser pour une utilisation future ; le système intégré de gestion des données de l'entreprise est en train de se mettre en place. .tables La commande est plus intuitive

25 votes

@Gryllida : bien que ce soit utilisable à partir de n'importe quelle API SQL car c'est du SQL valide. Les commandes intégrées peuvent ne pas être supportées partout.

2 votes

@DoktorJ Have .tables a été modifié pour afficher les tableaux d'une base de données jointe ?

178voto

Christian Davén Points 4527

Pour afficher toutes les tables, utilisez

SELECT name FROM sqlite_master WHERE type = "table"

Pour afficher toutes les lignes, je suppose que vous pouvez itérer dans toutes les tables et effectuer un SELECT * sur chacune d'elles. Mais peut-être qu'un DUMP est ce que vous recherchez ?

18 votes

Merci pour la seule réponse qui a vraiment répondu à la question... "Quel SQL", pas quelle commande peut être utilisée... merci !

0 votes

De plus, ceci imprime un nom de table par ligne, alors que .tables imprime plusieurs colonnes de noms de tables (ennuyeux/inefficace).

72voto

Antony.H Points 421

Utilisez .help pour vérifier les commandes disponibles.

.table

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

1 votes

C'est étrange, ça doit être correct, mais ça ne marche pas quand je l'utilise.

0 votes

@Jürgen K. : Que s'est-il passé ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X