Frage Wie listet man die Tabellen in einer SQLite-Datenbankdatei auf, die mit ATTACH geöffnet wurde?


Welche SQL kann verwendet werden, um die Tabellen und die Zeilen in diesen Tabellen in einer SQLite - Datenbankdatei aufzulisten - sobald ich sie an die Datenbank angehängt habe ATTACH Befehl auf dem Befehlszeilentool SQLite 3?


1017
2017-09-17 12:59


Ursprung


Antworten:


Das .tables, und .schema "Helfer" -Funktionen schauen nicht in ATTACHed-Datenbanken: sie fragen nur die SQLITE_MASTER Tabelle für die "Haupt" -Datenbank. Folglich, wenn Sie verwendet haben

ATTACH some_file.db AS my_db;

dann musst du tun

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

Beachten Sie, dass temporäre Tabellen nicht angezeigt werden .tables entweder: du musst auflisten sqlite_temp_master dafür:

SELECT name FROM sqlite_temp_master WHERE type='table';

449
2017-09-17 13:30



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

  1. Listen Sie die Tabellen in Ihrer Datenbank auf:

    .tables
    
  2. Listen Sie wie die Tabelle aussieht:

    .schema tablename
    
  3. Drucken Sie die gesamte Tabelle aus:

    SELECT * FROM tablename;
    
  4. Auflisten aller verfügbaren SQLite-Eingabeaufforderungsbefehle:

    .help
    

1187
2017-09-17 13:02



Es scheint, dass Sie durch die gehen müssen sqlite_master Tabelle, so:

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

Und dann manuell jeden Tisch mit einem durchlaufen SELECT oder ähnlich, um die Zeilen zu betrachten.

Das .DUMP und .SCHEMA Befehle scheint die Datenbank überhaupt nicht zu sehen.


419
2017-09-17 13:01



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 nur einen SELECT * -Wert ausführen. Aber vielleicht ist ein DUMP das, wonach Sie suchen?


138
2017-09-17 13:06



Benutzen .help um nach verfügbaren Befehlen zu suchen.

.table

Dieser Befehl würde alle Tabellen unter Ihrer aktuellen Datenbank anzeigen.


65
2017-08-31 04:13



Hierfür steht in der SQLite-Befehlszeile ein Befehl zur Verfügung:

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

Was konvertiert in das folgende 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

36
2017-09-17 13:06



Um die Tabellen aufzulisten, können Sie auch Folgendes tun:

SELECT name FROM sqlite_master
WHERE type='table';

34
2017-09-17 13:04



Versuchen PRAGMA table_info(table-name);
http://www.sqlite.org/pragma.html#schema


26
2018-06-07 02:53



Entsprechend der Dokumentation, das Äquivalent von MySQL SHOW TABLES; ist:

Der Befehl ".tables" ähnelt dem Modus "setting list" und wird dann ausgeführt   die folgende Abfrage:

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;

Wenn Sie jedoch überprüfen, ob eine einzelne Tabelle vorhanden ist (oder ihre Details abrufen), siehe @LuizGeron Antworten.


14
2018-01-31 10:47