Ich möchte meine iPhone-App auf eine neue Datenbankversion migrieren. Da ich keine Version gespeichert habe, muss ich überprüfen, ob bestimmte Spaltennamen vorhanden sind.
Dieser Stackoverflow-Eintrag schlägt vor, die Auswahl vorzunehmen
SELECT sql FROM sqlite_master
WHERE tbl_name = 'table_name' AND type = 'table'
und analysieren Sie das Ergebnis.
Ist das der übliche Weg? Alternativen?
SQLite.swift
finden Sie in dieser Frage und Antwort eine einfache Liste der Spaltennamen oder diese für Migrationsprobleme.Antworten:
Sie erhalten eine Liste aller Spaltennamen.
quelle
create temporary table TmpCols (cid integer, name text, type text, nn bit, dflt_value, pk bit); .mode insert TmpCols .output cols PRAGMA TABLE_INFO('yourtable'); .read cols .mode csv .output stdout
db.rawQuery("PRAGMA table_info(" + tablename + ")", null);
Wenn Sie über die SQLite-Datenbank verfügen, verwenden Sie das Befehlszeilenprogramm sqlite3 und die folgenden Befehle:
So listen Sie alle Tabellen in der Datenbank auf:
So zeigen Sie das Schema für eine bestimmte
tablename
:quelle
PRAGMA table_info(table_name);
Wenn Sie tun
Sie erhalten das gewünschte Ergebnis.
quelle
.sqliterc
Datei .PRAGMA
Methode als auch die.schema
Methode bei mir nicht funktioniert. Aber dieser funktioniert gut.Nur für Super-Noobs wie mich, die sich fragen, wie oder was die Leute damit gemeint haben
Sie möchten dies als Vorbereitungsanweisung verwenden, wie unten gezeigt. Dadurch wird eine Tabelle ausgewählt, die so aussieht, außer dass sie mit Werten gefüllt ist, die sich auf Ihre Tabelle beziehen.
Wobei ID und Name die tatsächlichen Namen Ihrer Spalten sind. Um diesen Wert zu erhalten, müssen Sie den Spaltennamen auswählen, indem Sie Folgendes verwenden:
Dadurch wird der Spaltenname der aktuellen Zeile zurückgegeben. Um sie alle zu erfassen oder die gewünschte zu finden, müssen Sie alle Zeilen durchlaufen. Der einfachste Weg, dies zu tun, wäre die folgende.
quelle
Wenn die Ausgabe Ihrer Abfragen Spaltennamen enthalten und korrekt als Spalten ausgerichtet werden soll, verwenden Sie die folgenden Befehle in
sqlite3
:Sie erhalten folgende Ausgabe:
quelle
Um eine Liste der Spalten zu erhalten, können Sie einfach Folgendes verwenden:
quelle
Eine alternative Möglichkeit, eine Liste der hier nicht erwähnten Spaltennamen zu erhalten, besteht darin, aus einer Pragma-Funktion auszuwählen:
Sie können überprüfen, ob eine bestimmte Spalte vorhanden ist, indem Sie Folgendes ausführen:
Dies ist, was Sie verwenden, wenn Sie das Ergebnis der Auswahl von sql aus sqlite_master oder pragma table_info nicht analysieren möchten.
Referenz:
https://www.sqlite.org/pragma.html#pragfunc
quelle
Sie können die Like-Anweisung verwenden, wenn Sie nach einer bestimmten Spalte suchen
Ex:
quelle
Wenn Sie die
sqlite3
CLI ausführen , geben Sie Folgendes ein:gibt auch das gewünschte Ergebnis
quelle
Ich weiß, dass es ein alter Thread ist, aber kürzlich brauchte ich den gleichen und fand einen ordentlichen Weg:
quelle
where t.name = 'table';
Um die Spalteninformationen zu erhalten, können Sie das folgende Snippet verwenden:
quelle
quelle
.schema in sqlite console Wenn Sie sich in der Tabelle befinden, sieht es für mich ungefähr so aus ...
quelle
quelle
quelle
Ich weiß, dass es zu spät ist, aber das wird anderen helfen.
Um den Spaltennamen der Tabelle zu finden, sollten Sie ausführen
select * from tbl_name
und Sie erhalten das Ergebnis insqlite3_stmt *
. und überprüfen Sie, ob die Spalte über die insgesamt abgerufene Spalte iteriert. Bitte beziehen Sie sich auf den folgenden Code.Dadurch werden alle Spaltennamen der Ergebnismenge gedruckt.
quelle
.schema table_name
Dadurch werden die Spaltennamen der Tabelle aus der Datenbank aufgelistet.
Hoffe das wird helfen !!!
quelle
Vielleicht möchten Sie nur die Tabellenüberschriften auf der Konsole drucken. Dies ist mein Code: (für jede Tabelle)
quelle