495 Stimmen

Gibt es ein SQLite-Äquivalent zu DESCRIBE [table] von MySQL?

Ich fange gerade erst an zu lernen SQLite . Es wäre schön, wenn man die Details einer Tabelle sehen könnte, wie bei MySQL DESCRIBE [table] . PRAGMA table_info [table] ist nicht gut genug, da es nur grundlegende Informationen enthält (zum Beispiel zeigt es nicht, ob eine Spalte ein Feld ist oder nicht). Gibt es in SQLite eine Möglichkeit, dies zu tun?

607voto

Ned Batchelder Punkte 342778

El SQLite-Befehlszeilen-Dienstprogramm hat eine .schema TABLENAME Befehl, der Ihnen die Erstellungsanweisungen anzeigt.

336voto

Strater Punkte 3193
PRAGMA table_info([tablename]);

129voto

Mark Rushakoff Punkte 236626

Suchen Sie nach dem SQL, mit dem eine Tabelle erstellt wurde? Hierfür können Sie Abfrage der sqlite_schema Tabelle :

sqlite> CREATE TABLE foo (bar INT, quux TEXT);
sqlite> SELECT * FROM sqlite_schema;
table|foo|foo|2|CREATE TABLE foo (bar INT, quux TEXT)
sqlite> SELECT sql FROM sqlite_schema WHERE name = 'foo';
CREATE TABLE foo (bar INT, quux TEXT)
Alternative Namen

Auf die Schematabelle kann immer mit dem Namen sqlite_schema , insbesondere wenn sie durch den Schemanamen qualifiziert sind wie main.sqlite_schema o temp.sqlite_schema . Aus Gründen der historischen Kompatibilität werden jedoch auch einige alternative Namen anerkannt, darunter:

  1. sqlite_master
  2. sqlite_temp_schema
  3. sqlite_temp_master

Die Alternativen (2) und (3) funktionieren nur für die TEMP-Datenbank, die mit jeder Datenbankverbindung verbunden ist, aber Alternative (1) funktioniert überall.

61voto

Ross Snyder Punkte 1875

Um alle Tabellen zu sehen:

.tables

Um eine bestimmte Tabelle zu sehen:

.schema [tablename]

9voto

Radagast Punkte 131

Um zu verhindern, dass die Leute durch einige Kommentare zu den anderen Antworten in die Irre geführt werden:

  1. Si .schema o query from sqlite_master keine Ausgabe, sondern zeigt eine nicht vorhandene tablename z.B. kann dies auch durch eine ; Semikolon am Ende für .schema , .tables , ... Oder einfach nur, weil die Tabelle nicht wirklich existiert. Das .schema einfach nicht funktioniert, ist sehr unwahrscheinlich und dann sollte ein Fehlerbericht beim Sqlite-Projekt eingereicht werden.

... .schema kann nur von der Kommandozeile aus verwendet werden; die obigen Befehle > können als Abfrage über eine Bibliothek (Python, C#, etc.) ausgeführt werden. - Mark Rushakoff 25. Juli '10 um 21:09

  1. kann nur von der Kommandozeile aus verwendet werden' kann die Leute in die Irre führen. Fast jede (wahrscheinlich jede?) Programmiersprache kann andere Programme/Befehle aufrufen. Daher ist der zitierte Kommentar unglücklich, da der Aufruf eines anderen Programms, in diesem Fall sqlite eher unterstützt wird als die Tatsache, dass die Sprache eine wrapper / library für jedes Programm (was bei der Masse der Programme nicht nur anfällig für Unvollständigkeit ist, sondern auch kontraproduktiv ist) single-source principle kompliziert maintenance die das Datenchaos in der Welt noch vergrößern).

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