Wie liste ich die Tabellen in einer SQLite -Datenbankdatei auf, die mit Anhang geöffnet wurde?
Frage
Mit welcher SQL kann die Tabellen aufgelistet werden, und die Zeilen in diesen Tabellen in einer SQLite -Datenbankdatei - sobald ich sie mit dem angehängt habe ATTACH
Befehl im SQLite 3 -Befehlszeilenwerkzeug?
Lösung
Das .tables
, und .schema
"Helfer" -Funktionen untersuchen nicht in angehängte Datenbanken: Sie fragen einfach 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: Sie müssen auflisten sqlite_temp_master
dafür:
SELECT name FROM sqlite_temp_master WHERE type='table';
Andere Tipps
Es gibt einige Schritte, um die Tabellen in einer SQLite -Datenbank anzuzeigen:
Listen Sie die Tabellen in Ihrer Datenbank auf:
.tables
Listen Sie auf, wie die Tabelle aussieht:
.schema tablename
Drucken Sie die gesamte Tabelle:
SELECT * FROM tablename;
Listen Sie alle verfügbaren SQLite -Eingabeaufentwicklungsbefehle auf:
.help
Es scheint, dass Sie die durchgehen müssen sqlite_master Tabelle wie diese:
SELECT * FROM dbname.sqlite_master WHERE type='table';
Und dann manuell durch jeden Tisch mit einem durchgehen SELECT
oder ähnlich wie die Reihen.
Das .DUMP
und .SCHEMA
Befehle scheint die Datenbank überhaupt nicht zu sehen.
Verwenden Sie um alle Tische zu zeigen
SELECT name FROM sqlite_master WHERE type = "table"
Um alle Zeilen zu zeigen, können Sie wohl alle Tabellen durchführen und einfach einen ausgewählten * auf jedem einzelnen durchführen. Aber vielleicht ist eine Müllkippe das, wonach Sie suchen?
Verwenden .help
nach verfügbaren Befehlen zu überprüfen.
.table
In diesem Befehl würde alle Tabellen unter Ihrer aktuellen Datenbank angezeigt.
Hierfür ist ein Befehl in der SQLite -Befehlszeile verfügbar:
.tables ?PATTERN? List names of tables matching a LIKE pattern
Die in die folgenden SQL konvertiert:
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
So listen Sie die Tabellen auf, die Sie auch tun können:
SELECT name FROM sqlite_master
WHERE type='table';
Versuchen PRAGMA table_info(table-name);
http://www.sqlite.org/pragma.html#schema
Ich benutze diese Abfrage, um sie zu bekommen:
SELECT name FROM sqlite_master WHERE type='table'
Und in iOS zu verwenden:
NSString *aStrQuery=[NSString stringWithFormat:@"SELECT name FROM sqlite_master WHERE type='table'"];
Laut dem Dokumentation, das Äquivalent von MySQLs ' SHOW TABLES;
ist:
Der Befehl ".tables" ähnelt dem Einstellungslistenmodus und wird dann die folgende Abfrage ausführen:
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 vorliegt (oder ihre Details erhalten), siehe @Luizgeron Antworten.
Ab den neuesten Versionen von SQLite 3 können Sie ausgeben:
.fullschema
um alle Ihre Erstellen von Aussagen zu sehen.
Der einfachste Weg, dies zu tun, besteht darin, die Datenbank direkt zu öffnen und die zu verwenden .dump
Befehl, anstatt es nach dem Aufrufen des SQLite 3 -Shell -Werkzeugs zu anhängen.
Also ... (Angenommen, Ihre OS -Befehlszeile ist $ $) anstelle von $sqlite3
:
sqlite3> ATTACH database.sqlite as "attached"
Öffnen Sie die Datenbank in Ihrer OS -Befehlszeile direkt:
$sqlite3 database.sqlite
sqlite3> .dump
Verwenden:
import sqlite3
TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"
Über ein union all
, Kombinieren Sie alle Tabellen in einer Liste.
select name
from sqlite_master
where type='table'
union all
select name
from sqlite_temp_master
where type='table'
Da niemand über die offizielle Referenz von SQLite erwähnt hat, denke ich, dass es nützlich sein kann, unter dieser Überschrift darauf zu verweisen:
https://www.sqlite.org/cli.html
Sie können Ihre Datenbank mit den in diesem Link beschriebenen Befehlen manipulieren. Neben, Wenn Sie Windows OS verwenden Und wissen Sie nicht, wo sich die Befehlsschale befindet, das sich auf der Site des SQLite befindet:
https://www.sqlite.org/download.html
Nach dem Herunterladen, Klicken Sie auf SQLite3.exe -Datei, um die SQLite -Befehlsschale zu initialisieren. Wenn es initialisiert wird, verwendet diese SQLite-Sitzung standardmäßig eine In-Memory-Datenbank, nicht eine Datei auf der Festplatte, und so gehen alle Änderungen beim Ablauf der Sitzung verloren. Um eine persistente Festplattendatei als Datenbank zu verwenden, geben Sie den Befehl ".open ex1.db" unmittelbar nach dem Start des Terminals ein.
Das obige Beispiel führt dazu, dass die Datenbankdatei mit dem Namen "ex1.db" geöffnet und verwendet und erstellt wird, wenn sie zuvor nicht vorhanden ist. Möglicherweise möchten Sie einen vollständigen Pfadnamen verwenden, um sicherzustellen, dass sich die Datei im Verzeichnis befindet, in dem sie glauben. Verwenden Sie die Vorwärtsspeisen als Verzeichnistrennzeichen. Mit anderen Worten verwenden "c: /work/ex1.db", nicht "c: work ex1.db".
Um alle Tabellen in der zuvor ausgewählten Datenbank anzuzeigen, geben Sie den Befehl ein .tabelle Wie es in der obigen Verbindung gesagt wird.
Wenn Sie in Windows arbeiten, denke ich, dass es möglicherweise nützlich ist, diese SQLite.exe -Datei mit den anderen Python -Dateien in denselben Ordner zu verschieben. Auf diese Weise schreibt die Python -Datei an und die SQLite Shell liest aus .db -Dateien auf demselben Weg.
Das Kommando ".Schema" listet die verfügbaren Tabellen und ihre Zeilen auf, indem Sie Ihnen die Erstellung dieser Tabellen anzeigen:
sqlite> create table_a (id int, a int, b int); sqlite> .schema table_a CREATE TABLE table_a (id int, a int, b int);
.Da, um alle Datenbanken zu sehen - eine namens ''hauptsächlich'
Tabellen dieser Datenbank können von sehen
Wählen Sie eindeutig TBL_NAME aus sqlite_master order für 1;
Die beigefügten Datenbanken benötigen Präfixe, mit denen Sie ausgewählt wurden, wie in der Anweisung anhängen EG aa (, BB, CC ...) Also:
Wählen Sie einen unterschiedlichen tbl_name aus aa.sqlite_master Ordnung um 1;
Beachten Sie, dass Sie hier auch die Ansichten erhalten. Um diese hinzuzufügen wobei type = 'table' ' vor Bestellung'