601 Stimmen

Wie erhält man eine Liste von Spaltennamen in einer Sqlite3-Datenbank?

Ich möchte meine iPhone-App auf eine neue Datenbankversion migrieren. Da ich einige Versionen nicht gespeichert habe, muss ich prüfen, ob bestimmte Spaltennamen existieren.

Diese Stackoverflow-Eintrag schlägt vor, die Auswahl zu treffen

SELECT sql FROM sqlite_master
WHERE tbl_name = 'table_name' AND type = 'table'

und analysieren das Ergebnis.

Ist das der übliche Weg? Gibt es Alternativen?

79voto

user1461607 Punkte 2052

Eine alternative Möglichkeit, eine Liste der hier nicht erwähnten Spaltennamen zu erhalten, die plattformübergreifend ist und nicht auf die sqlite3.exe-Shell angewiesen ist, ist die Auswahl aus der Tabellenwertfunktion PRAGMA_TABLE_INFO().

SELECT name FROM PRAGMA_TABLE_INFO('your_table');
name      
tbl_name  
rootpage  
sql

Sie können prüfen, ob eine bestimmte Spalte existiert, indem Sie sie abfragen:

SELECT 1 FROM PRAGMA_TABLE_INFO('your_table') WHERE name='column1';
1

Dies verwenden Sie, wenn Sie das Ergebnis von select sql from sqlite_master oder pragma table_info nicht parsen wollen.

Beachten Sie, dass diese Funktion experimentell ist und in SQLite Version 3.16.0 (2017-01-02) hinzugefügt wurde.

Referenz:

https://www.sqlite.org/pragma.html#pragfunc

39voto

Aditya Joardar Punkte 532

Um eine Liste von Spalten zu erhalten, können Sie einfach verwenden:

.schema tablename

24voto

Slavian Petrov Punkte 552

Ich weiß, es ist ein altes Thema, aber vor kurzem brauchte ich das Gleiche und fand einen guten Weg:

SELECT c.name FROM pragma_table_info('your_table_name') c;

21voto

Sam Houston Punkte 2837

Wenn Sie die sqlite3 cli, tippt ein:

sqlite3 -header

führt ebenfalls zu dem gewünschten Ergebnis

15voto

Sakthi Velan Punkte 340

.schema table_name

Dadurch werden die Spaltennamen der Tabelle aus der Datenbank aufgelistet.

Hoffentlich hilft das!!!

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