1373 Stimmen

Wie kann ich die Tabellen in einer SQLite-Datenbankdatei auflisten, die mit ATTACH geöffnet wurde?

Welches SQL kann verwendet werden, um die Tabellen und die Zeilen in diesen Tabellen in einer SQLite-Datenbankdatei aufzulisten - sobald ich sie mit dem ATTACH Befehl im SQLite 3 Kommandozeilenprogramm?

2 Stimmen

Versuchen Sie dies, Sie haben alle Informationen zu den Tabellen http://www.sqlite.org/pragma.html#schema

3 Stimmen

Im Folgenden finden Sie eine nützliche GUI für sqlite, falls Sie daran interessiert sind: sqlitestudio.pl Gibt Ihnen Zugriff auf die Details der Datenbanken, Tabellen, sehr schnell und hat eine schöne Abfrage-Editor zu sehen ...

24 Stimmen

.tables für Tabellen und .schema ?TABLE? für das Schema der jeweiligen Tabelle.

1396voto

Mark Janssen Punkte 13825

Es gibt einige Schritte, um die Tabellen in einer SQLite-Datenbank zu sehen:

  1. Listen Sie die Tabellen in Ihrer Datenbank auf:

    .tables
  2. Geben Sie an, wie die Tabelle aussieht:

    .schema tablename
  3. Drucken Sie die gesamte Tabelle:

    SELECT * FROM tablename;
  4. Alle verfügbaren SQLite-Prompt-Befehle auflisten:

    .help

55 Stimmen

.table y .tables sind beide erlaubt. Was das betrifft, .ta würde ebenfalls funktionieren, da sqlite3 jeden Befehl akzeptiert, der eindeutig ist. Der Name des Befehls ist laut Hilfe in der Tat ".tables" (falls noch jemand aufpasst).

33 Stimmen

(Dies sollte die akzeptierte Antwort sein, es ist die eleganteste Art, Dinge zu tun).

8 Stimmen

.tables wird keine Tabellen anzeigen, wenn man die Datenbank(en) über ATTACH '<path>' AS <name>; aber lasses antwort genügt. da der OP von ATTACHing sprach, glaube ich, dass er recht hatte, diese antwort nicht zu akzeptieren. edit: habe gerade bemerkt, dass anthony und andere unten auch darauf hingewiesen haben.

679voto

Anthony Williams Punkte 64334

El .tables y .schema "Helfer"-Funktionen schauen nicht in ATTACHed-Datenbanken: sie fragen nur die SQLITE_MASTER Tabelle für die "Hauptdatenbank". Wenn Sie also

ATTACH some_file.db AS my_db;

dann müssen Sie Folgendes tun

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

Beachten Sie, dass temporäre Tabellen nicht mit .tables entweder: Sie müssen auflisten sqlite_temp_master dafür:

SELECT name FROM sqlite_temp_master WHERE type='table';

162 Stimmen

Nur "SELECT name FROM sqlite_master WHERE type='table'" funktioniert bei mir

6 Stimmen

SELECT name FROM my_db.sqlite_master WHERE type='table'; dies funktioniert bei mir nicht (für die angehängte DB) und es wird der Fehler ausgegeben: no such table exist "my_db.sqlite_master"

0 Stimmen

Was Sie mit temporären Tabellen meinen? Gibt es welche, wenn ich gerade eine SQLite-DB-Datei geöffnet habe?

469voto

Lasse V. Karlsen Punkte 364542

Es scheint, als müssten Sie durch die sqlite_master Tabelle, etwa so:

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

Und gehen Sie dann manuell durch jede Tabelle mit einer SELECT oder ähnliches, um die Zeilen zu betrachten.

El .DUMP y .SCHEMA Befehle scheinen die Datenbank überhaupt nicht zu sehen.

123 Stimmen

Das ist nicht einfach zu lesen oder für die Zukunft zu merken; die eingebaute .tables Der Befehl ist intuitiver

27 Stimmen

@Gryllida: Trotzdem ist dies von jeder SQL-API aus nutzbar, da es sich um valides SQL handelt. Eingebaute Befehle werden möglicherweise nicht überall unterstützt.

2 Stimmen

@DoktorJ haben .tables geändert wurde, um Tabellen aus einer angehängten Datenbank anzuzeigen?

193voto

Christian Davén Punkte 14978

Um alle Tabellen anzuzeigen, verwenden Sie

SELECT name FROM sqlite_master WHERE type = "table"

Um alle Zeilen anzuzeigen, können Sie alle Tabellen durchlaufen und einfach ein SELECT * auf jede einzelne Tabelle anwenden. Aber vielleicht ist ein DUMP das, was Sie suchen?

18 Stimmen

Danke für die einzige Antwort, die die Frage wirklich beantwortet... "Welches SQL", nicht welcher Befehl kann verwendet werden... Danke!

0 Stimmen

Außerdem wird ein Tabellenname pro Zeile ausgegeben, während .tables mehrere Spalten mit Tabellennamen ausgibt (lästig/nicht nützlich).

74voto

Antony.H Punkte 935

Verwenden Sie .help um nach verfügbaren Befehlen zu suchen.

.table

Dieser Befehl zeigt alle Tabellen in Ihrer aktuellen Datenbank an.

1 Stimmen

Seltsam, es muss richtig sein, aber es funktioniert nicht, wenn ich es benutze.

0 Stimmen

@Jürgen K.: Was ist passiert?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X