Je souhaite migrer mon application iPhone vers une nouvelle version de base de données. Comme je n'ai pas de version enregistrée, je dois vérifier si certains noms de colonne existent.
Cette entrée Stackoverflow suggère de faire la sélection
SELECT sql FROM sqlite_master
WHERE tbl_name = 'table_name' AND type = 'table'
et analyser le résultat.
Est-ce la voie courante? Des alternatives?
SQLite.swift
, consultez cette question et réponse pour une liste simple des noms de colonne ou celle-ci pour les problèmes de migration.Réponses:
vous obtiendra une liste de tous les noms de colonne.
la source
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);
Si vous avez la base de données sqlite, utilisez le programme de ligne de commande sqlite3 et ces commandes:
Pour répertorier toutes les tables de la base de données:
Pour afficher le schéma pour une donnée
tablename
:la source
PRAGMA table_info(table_name);
Si tu fais
vous obtiendrez le résultat souhaité.
la source
.sqliterc
dossier .PRAGMA
méthode et la.schema
méthode n'ont pas fonctionné pour moi. Mais celui-ci fonctionne très bien.Juste pour les super noobs comme moi qui se demandent comment ou ce que les gens entendent par
Vous souhaitez l'utiliser comme votre instruction de préparation, comme indiqué ci-dessous. Cela sélectionne une table qui ressemble à ceci, sauf qu'elle est remplie de valeurs relatives à votre table.
Où id et nom sont les noms réels de vos colonnes. Donc, pour obtenir cette valeur, vous devez sélectionner le nom de la colonne en utilisant:
Qui renverra le nom de la colonne de la ligne actuelle. Pour les saisir tous ou trouver celui que vous voulez, vous devez parcourir toutes les lignes. La manière la plus simple de le faire serait de la manière suivante.
la source
Si vous souhaitez que la sortie de vos requêtes inclue les noms des colonnes et soit correctement alignée en tant que colonnes, utilisez ces commandes dans
sqlite3
:Vous obtiendrez une sortie comme:
la source
Pour obtenir une liste de colonnes, vous pouvez simplement utiliser:
la source
Une autre façon d'obtenir une liste de noms de colonnes non mentionnés ici est de sélectionner une fonction pragma:
Vous pouvez vérifier si une certaine colonne existe en exécutant:
C'est ce que vous utilisez si vous ne voulez pas analyser le résultat de select sql from sqlite_master or pragma table_info.
Référence:
https://www.sqlite.org/pragma.html#pragfunc
la source
Lorsque vous exécutez le
sqlite3
cli, en tapant:donnera également le résultat souhaité
la source
vous pouvez utiliser l'instruction Like si vous recherchez une colonne particulière
ex:
la source
Je sais que c'est un vieux fil, mais récemment j'ai eu besoin de la même chose et j'ai trouvé un moyen soigné:
la source
where t.name = 'table';
Pour obtenir les informations de la colonne, vous pouvez utiliser l'extrait de code suivant:
la source
la source
.schema dans la console sqlite quand vous avez vous êtes à l'intérieur du tableau ça ressemble à ça pour moi ...
la source
la source
la source
Je sais qu'il est trop tard mais cela aidera les autres.
Pour trouver le nom de colonne de la table, vous devez exécuter
select * from tbl_name
et vous obtiendrez le résultatsqlite3_stmt *
. et vérifiez l'itération de la colonne sur le total de la colonne récupérée. Veuillez vous référer au code suivant pour la même chose.Cela affichera tous les noms de colonnes de l'ensemble de résultats.
la source
.schema table_name
Cela répertoriera les noms de colonnes de la table de la base de données.
J'espère que cela vous aidera !!!
la source
Vous souhaitez peut-être simplement imprimer les en-têtes du tableau sur la console. Voici mon code: (pour chaque table)
la source