Je cherche à récupérer une liste de colonnes dans un tableau. La base de données est la dernière version de SQLite (3.6, je crois). Je cherche un code qui fasse cela avec une requête SQL. Des points supplémentaires pour les métadonnées relatives aux colonnes (par exemple, la longueur, le type de données, etc.).
Réponses
Trop de publicités?Il s'agit d'une requête qui répertorie toutes les tables avec leurs colonnes, ainsi que toutes les métadonnées que j'ai pu obtenir sur chaque colonne, comme l'a demandé OP (comme points bonus).
SELECT
m.name AS table_name,
p.cid AS col_id,
p.name AS col_name,
p.type AS col_type,
p.pk AS col_is_pk,
p.dflt_value AS col_default_val,
p.[notnull] AS col_is_not_null
FROM sqlite_master m
LEFT OUTER JOIN pragma_table_info((m.name)) p
ON m.name <> p.name
WHERE m.type = 'table'
ORDER BY table_name, col_id
Merci à @David Garoutte pour m'avoir montré comment obtenir pragma_table_info
pour travailler dans une requête.
Exécutez cette requête pour voir toutes les métadonnées de la table :
SELECT * FROM sqlite_master WHERE type = 'table'
Je sais, ça fait longtemps mais il n'est jamais trop tard J'ai eu une question similaire avec TCL comme interpréteur et après plusieurs recherches, je n'ai rien trouvé de bon pour moi. Je propose donc quelque chose basé sur PRAGMA, sachant que votre BD est "main".
db eval { PRAGMA main.table_info(<your table name>) } TBL { puts $TBL(name) }
Et utilisation d'un tableau pour obtenir une liste
set col_list {}
db eval { PRAGMA main.table_info(<your table name>) } TBL { lappend col_list $TBL(name) }
puts $col_list
- Réponses précédentes
- Plus de réponses