SQLite column names – Spaltennamen einer Tabelle auslesen

SQLite Spaltennamen auslesen: Mit PRAGMA table_info, table_xinfo und pragma_table_info bekommst du Namen, Typen und Schema-Details.

Dieser Artikel hat eine Lesedauer von 4 minutes Minuten.

SQLite column names – Spaltennamen einer Tabelle auslesen

Spaltennamen einer SQLite-Tabelle liest du am einfachsten mit PRAGMA table_info aus. Wenn du nur die Namen brauchst, kannst du pragma_table_info wie eine Tabellenfunktion verwenden und gezielt die Spalte name abfragen.

Spaltennamen mit PRAGMA table_info auslesen

Für normale Tabellen reicht in SQLite meistens PRAGMA table_info(table_name). Die Abfrage liefert nicht nur die Spaltennamen, sondern auch weitere Metadaten wie Datentyp, Nullbarkeit, Default-Wert und Primärschlüsselposition.

Die kurze Regel lautet: Für einen schnellen Überblick nutzt du PRAGMA table_info. Wenn du nur die Spaltennamen brauchst, fragst du name aus pragma_table_info ab. Für vollständigere Strukturinformationen gibt es zusätzlich PRAGMA table_xinfo.

Der Beitrag gehört zur SQLite-Serie SQLite Fragen und Antworten. Sie sammelt kurze Lösungen für typische Fragen aus software-development.

Beispiel: Alle Spalteninformationen anzeigen

Für eine Tabelle users bekommst du die Spaltenmetadaten so:

PRAGMA table_info(users);

SQLite liefert dabei typischerweise Informationen wie:

cid | name | type | notnull | dflt_value | pk

Die wichtigste Spalte ist in diesem Fall name. Dort steht der eigentliche Spaltenname.

Nur die Spaltennamen auslesen

Wenn du wirklich nur die Spaltennamen einer SQLite-Tabelle brauchst, ist diese Form oft praktischer:

SELECT name
FROM pragma_table_info('users')
ORDER BY cid;

cid beschreibt die Position der Spalte innerhalb der Tabelle. Mit ORDER BY cid bekommst du die Spaltennamen in der Reihenfolge, in der sie in der Tabelle definiert wurden.

Das ist nützlich für Exporte, Generatoren, kleine Admin-Tools oder Skripte, die eine SQLite-Tabelle dynamisch auslesen sollen.

Was PRAGMA table_info liefert

PRAGMA table_info(users) gibt mehrere Informationen pro Spalte zurück:

  • cid: Position der Spalte
  • name: Name der Spalte
  • type: deklarierter Datentyp
  • notnull: Angabe, ob NOT NULL gesetzt ist
  • dflt_value: Default-Wert der Spalte
  • pk: Position innerhalb des Primary Keys

Gerade wenn du eine fremde SQLite-Datenbank analysierst, ist diese Ausgabe oft hilfreicher als nur eine reine Liste der Spaltennamen.

table_xinfo für generierte und versteckte Spalten

Für normale Tabellen reicht table_info fast immer. Wenn du aber generierte oder versteckte Spalten sehen möchtest, solltest du table_xinfo verwenden:

PRAGMA table_xinfo(users);

table_xinfo liefert zusätzliche Informationen, die table_info nicht immer zeigt. Das ist besonders relevant, wenn du mit komplexeren Tabellenstrukturen, virtuellen Tabellen oder generierten Spalten arbeitest.

Für einfache Datenbank-Inspektion genügt table_info. Für Tools, Generatoren oder Schema-Analyse ist table_xinfo oft die robustere Wahl.

Spaltennamen aus einer ATTACH-Datenbank auslesen

Wenn du eine zweite SQLite-Datenbank mit ATTACH eingebunden hast, verwendest du den Schema-Namen der angehängten Datenbank.

Beispiel:

ATTACH DATABASE 'archive.db' AS archive;

Die Spalten der Tabelle users in dieser angehängten Datenbank fragst du dann so ab:

PRAGMA archive.table_info(users);

Der Name archive ist dabei der Alias, den du beim ATTACH vergeben hast. Er wird zum Schema-Namen der angehängten Datenbank.

Spaltennamen für Views auslesen

Auch Views können mit PRAGMA table_info abgefragt werden:

PRAGMA table_info(active_users);

Dabei bekommst du die Spalten, die sich aus der View-Definition ergeben. Wichtig ist aber: Eine View ist keine physische Tabelle. Die Spalten stammen aus dem zugrunde liegenden SELECT.

Das ist vor allem dann relevant, wenn du ein Tool baust, das Tabellen und Views gemeinsam anzeigen oder dokumentieren soll.

Sicherheit bei dynamischen Tabellennamen

Ein häufiger Fehler entsteht, wenn Tabellennamen aus Benutzereingaben direkt in SQL übernommen werden. Der Tabellenname in PRAGMA table_info(users) ist kein normaler SQL-Parameter wie ein Wert in einer WHERE-Bedingung.

Wenn du den Tabellennamen dynamisch setzt, solltest du ihn aus einer erlaubten Liste wählen oder vorher gegen die vorhandenen Tabellen prüfen.

Zum Beispiel kannst du Tabellen aus sqlite_schema laden:

SELECT name
FROM sqlite_schema
WHERE type = 'table'
ORDER BY name;

Danach verwendest du nur Tabellennamen, die wirklich existieren und in deinem Tool erlaubt sind.

Typische Einsatzfälle

Spaltennamen aus SQLite auszulesen ist in vielen Situationen praktisch:

  • Exportfunktionen für CSV, JSON oder Markdown
  • dynamische Tabellenansichten
  • einfache Admin-Oberflächen
  • TypeScript-Typgeneratoren
  • Datenbank-Dokumentation
  • Schema-Checks in Tests
  • Migrationstools
  • Analyse fremder SQLite-Dateien

Für software-development ist diese Abfrage besonders nützlich, wenn du nicht nur feste SQL-Abfragen schreibst, sondern SQLite-Datenbanken automatisch analysieren oder anzeigen möchtest.

Häufige Stolperstellen bei SQLite column names

Beim Auslesen von SQLite-Spaltennamen tauchen häufig dieselben Probleme auf:

  • PRAGMA table_info zeigt nicht alle Details, wenn generierte oder versteckte Spalten im Spiel sind.
  • Ohne ORDER BY cid kann eine reine Select-Abfrage die gewünschte Spaltenreihenfolge verlieren.
  • Dynamische Tabellennamen sollten nicht ungeprüft aus Benutzereingaben kommen.
  • Views lassen sich abfragen, sind aber keine physischen Tabellen.
  • Bei ATTACH muss der richtige Schema-Name verwendet werden.
  • Für vollständige Schema-Analyse ist table_xinfo oft besser als table_info.

SQLite einfacher verwalten mit SQLite Hub

Wenn du auf der Suche nach einem kostenlosen SQLite Manager bist, habe ich mit SQLite Hub ein quelloffenes SQLite Management System für lokale Datenbanken gebaut. Das Tool hilft dir dabei, SQLite-Datenbanken komfortabler zu durchsuchen, Tabellenstrukturen zu prüfen, SQL-Abfragen auszuführen und deine Datenbank direkt neben dem Projekt besser zu dokumentieren. SQLite Hub ist Open Source und richtet sich an Entwickler, Solodevs und alle, die SQLite nicht nur im Terminal, sondern mit einer klaren Oberfläche nutzen möchten.

Verwandte SQLite-Fragen

Fazit

Für normale Tabellen ist PRAGMA table_info der einfachste Weg, um Spaltennamen und Spaltenmetadaten aus SQLite auszulesen. Wenn du nur die Namen brauchst, ist SELECT name FROM pragma_table_info('users') ORDER BY cid besonders praktisch.

Wenn du vollständige Strukturinformationen brauchst, etwa für generierte oder versteckte Spalten, solltest du zusätzlich PRAGMA table_xinfo verwenden.

FAQ

Wie bekomme ich Spaltennamen aus einer SQLite-Tabelle?

Nutze PRAGMA table_info(table_name) und lies im Ergebnis die Spalte name aus.

Wie bekomme ich nur die Spaltennamen ohne weitere Informationen?

Nutze SELECT name FROM pragma_table_info("table_name") ORDER BY cid.

Was ist der Unterschied zwischen table_info und table_xinfo?

table_xinfo zeigt zusätzliche Spalteninformationen, etwa für versteckte oder generierte Spalten.

Wie frage ich Spalten in einer ATTACH-Datenbank ab?

Verwende den Schema-Namen der angehängten Datenbank, zum Beispiel PRAGMA archive.table_info(users).

oliverjessner.at als bevorzugte Quelle bei Google hinzufügen

Interesse an einer Zusammenarbeit?


Ob konkrete Anfrage, lose Idee oder erster Austausch: Schreib mir, wenn du denkst, dass wir gut zusammenpassen könnten.



ein iPhone welches einen Anruf von Oliver Jessner zeigt.