sql - tag - wordpress seo titel




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

Welche SQL kann verwendet werden, um die Tabellen und die Zeilen in diesen Tabellen in einer SQLite-Datenbankdatei ATTACH - nachdem ich sie mit dem ATTACH Befehl im SQLite 3-Befehlszeilentool verbunden habe?


Über eine union all , alle Tabellen in einer Liste kombinieren.

select name
from sqlite_master 
where type='table'

union all 

select name 
from sqlite_temp_master 
where type='table'

.da, um alle Datenbanken zu sehen - eine namens " Haupt "

Tabellen dieser Datenbank können von gesehen werden

SELECT distinct tbl_name aus sqlite_master order by 1;

Die angehängten Datenbanken benötigen Präfixe, die Sie mit AS in der Anweisung ATTACH zB aa (, bb, cc ...) gewählt haben.

SELECT distinct tbl_name aus aa.sqlite_master Sortierung nach 1;

Beachten Sie, dass Sie hier auch die Ansichten erhalten. Um diese auszuschließen, geben Sie type = 'table' vor 'order' ein


Benutzen:

import sqlite3

TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"

Da niemand die offizielle Referenz von SQLite erwähnt hat, denke ich, dass es nützlich sein könnte, in dieser Rubrik darauf Bezug zu nehmen:

https://www.sqlite.org/cli.html

Sie können Ihre Datenbank mit den in diesem Link beschriebenen Befehlen manipulieren. Wenn Sie das Windows-Betriebssystem verwenden und nicht wissen, wo sich die Befehlsshell befindet, finden Sie dies auf der Site von SQLite:

https://www.sqlite.org/download.html

Klicken Sie nach dem Herunterladen auf die Datei sqlite3.exe, um die SQLite-Befehlsshell zu initialisieren . Wenn diese SQLite-Sitzung initialisiert wird, verwendet sie standardmäßig eine speicherinterne Datenbank und keine Datei auf der Festplatte, sodass alle Änderungen beim Beenden der Sitzung verloren gehen. Um eine persistente Disk-Datei als Datenbank zu verwenden, geben Sie unmittelbar nach dem Start des Terminal-Fensters den Befehl ".open ex1.db" ein.

Im obigen Beispiel wird die Datenbankdatei mit dem Namen "ex1.db" geöffnet und verwendet und erstellt, wenn sie zuvor nicht existiert. Möglicherweise möchten Sie einen vollständigen Pfadnamen verwenden, um sicherzustellen, dass sich die Datei in dem Verzeichnis befindet, in dem Sie sich befinden. Verwenden Sie Schrägstriche als Verzeichnistrennzeichen. Mit anderen Worten benutzen Sie "c: /work/ex1.db", nicht "c: \ work \ ex1.db".

Um alle Tabellen in der Datenbank anzuzeigen, die Sie zuvor ausgewählt haben, geben Sie den Befehl .tables ein, so wie es im obigen Link angegeben ist.

Wenn Sie in Windows arbeiten, denke ich, dass es nützlich sein könnte, diese Datei sqlite.exe in den gleichen Ordner mit den anderen Python-Dateien zu verschieben. Auf diese Weise schreibt die Python-Datei in die SQLite-Shell, die aus .db-Dateien liest, befinden sich im selben Pfad.


Die .tables und .schema " .schema " nicht in ATTACHed-Datenbanken: Sie SQLITE_MASTER nur die Tabelle SQLITE_MASTER für die Datenbank "main" ab. 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 mit Tabellen .tables werden: Sie müssen sqlite_temp_master dafür sqlite_temp_master :

SELECT name FROM sqlite_temp_master WHERE type='table';

Dies ist am einfachsten, wenn Sie die Datenbank direkt öffnen und den Befehl .dump , anstatt ihn nach dem Aufrufen des Shell-Tools von SQLite 3 .dump .

Also ... (nehmen Sie an, dass die Eingabeaufforderung Ihres Betriebssystems $ ist) anstelle von $sqlite3 :

sqlite3> ATTACH database.sqlite as "attached"

Öffnen Sie die Datenbank direkt über die OS-Befehlszeile:

$sqlite3 database.sqlite
sqlite3> .dump

Es scheint, dass Sie die Tabelle sqlite_master wie folgt durchlaufen müssen :

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

Und dann manuell jede Tabelle mit einem SELECT oder ähnlichem durchlaufen, um die Zeilen zu betrachten.

Die .DUMP und .SCHEMA Befehle scheinen die Datenbank überhaupt nicht zu sehen.


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

Laut der documentation , das Äquivalent von MySQL SHOW TABLES; ist:

Der Befehl ".tables" ähnelt dem Einstellen des Listenmodus und führt dann die folgende Abfrage aus:

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 existiert (oder um Details zu erhalten), @LuizGeron Antwort von @LuizGeron .


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?



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

.table

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





metadata