Je cherche à récupérer une liste de colonnes dans une table. La base de données est la dernière version de SQLite (3.6, je crois). Je suis à la recherche de code qui le fait avec une requête SQL. Points bonus supplémentaires pour les métadonnées liées aux colonnes (par exemple, longueur, type de données, etc ...)Comment puis-je obtenir la liste des colonnes dans une table pour une base de données SQLite?
Répondre
Ce que vous cherchez s'appelle le dictionnaire de données. Dans sqlite une liste de toutes les tables sont disponibles en questionnant la table sqlite_master
sqlite> create table people (first_name varchar, last_name varchar, email_address varchar);
sqlite> select * from sqlite_master;
table|people|people|2|CREATE TABLE people (first_name varchar, last_name varchar, email_address varchar)
Pour obtenir des informations sur colonne, vous pouvez utiliser l'instruction pragma table_info(table_name)
(ou voir?):
sqlite> pragma table_info(people);
0|first_name|varchar|0||0
1|last_name|varchar|0||0
2|email_address|varchar|0||0
Pour plus d'informations sur la pragma déclarations, voir le documentation.
juste aller dans votre coquille sqlite:
$ sqlite3 path/to/db.sqlite3
puis vient de frapper
sqlite> .schema
et vous obtiendrez tout.
est ici la manière simple:
.schema <table>
Cela devrait vraiment être la réponse. –
@EhteshChoudhury non il ne devrait pas, la question demande une requête SQL et ce n'est pas un. – jazzpi
La question est vieux, mais ce qui suit n'a pas encore été mentionnés.
Une autre façon pratique dans de nombreux cas, est de transformer les en-têtes par:
sqlite> .headers on
Ensuite,
sqlite> SELECT ... FROM table
affichera un titre montrant tous les champs sélectionnés (tous si vous SELECT *) au haut de la sortie.
bâtiment au-dessus, vous pouvez le faire à la fois:
sqlite3 yourdb.db ".schema"
Cela vous donnera le SQL pour créer la table, ce qui est effectivement une liste des colonnes.
Je sais, ça fait longtemps mais il n'est jamais trop tard ... J'ai eu une question similaire avec TCL en tant qu'interprète 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 DB est « principale »
db eval { PRAGMA main.table_info(<your table name>) } TBL { puts $TBL(name) }
et l'utilisation du réseau 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
- 1. Obtenir la liste des colonnes calculées dans la table de base de données (SQL Server)
- 2. Comment ajouter une colonne dans une table de base de données sqlite 2
- 3. Comment mapper de nombreuses colonnes d'une table dans la base de données à un tableau/une liste en classe?
- 4. C# Ajouter dynamiquement des colonnes à la table dans la base de données
- 5. conserver une table de journal dans la base de données sqlite?
- 6. Vider uniquement une partie de la base de données sqlite
- 7. Comment accéder à une base de données SQLite dans Clojure?
- 8. Comment obtenir des données d'une base de données vers une autre base de données?
- 9. Comment obtenir une liste de méthodes sur une table?
- 10. Comment renommer une table dans SQLite 3.0?
- 11. Comment obtenir une liste d'utilisateurs verrouillés dans une base de données Oracle?
- 12. Liste des chaînes uniques dans la table de base de données en utilisant Linq?
- 13. données dans une table emboîtées de base de données
- 14. SQLite - comment obtenir une valeur moyenne?
- 15. Quelle est la meilleure façon de convertir une base de données mysql en une base sqlite?
- 16. Comment créer une table avec dynamique no. de colonnes pour la saisie de données
- 17. Comment obtenir une liste des en-têtes de colonnes d'une liste basée sur displayindex?
- 18. Comment stocker des données modifiées dans une base de données?
- 19. la taille des colonnes de base de données pour les données à base de caractères
- 20. plusieurs colonnes distinctes dans une base MySQL
- 21. Puis-je tester l'existence d'une table dans une base de données SQLite?
- 22. noms de colonnes pour une table formée par une UNION
- 23. Insérer des données dans une colonne de deux autres colonnes de la même table
- 24. Problème SQLite sélectionnant deux colonnes comme une seule
- 25. Copie des données d'une table dans une base de données à une autre base de données séparée
- 26. Utilisez LINQ pour obtenir des données à partir d'une base de données à partir des données dans une autre base de données
- 27. Comment obtenir une liste de champs dans une contrainte unique
- 28. Comment stocker un objet dans une base de données SQLite dans Android?
- 29. Une base de données pour python 3?
- 30. Remplir la liste déroulante d'une table de base de données
Great! Maintenant, comment cela se fait en dehors de la ligne de commande? Comment cela se fait-il dans mon propre programme C? –
Comment puis-je implémenter le même que ci-dessus dans Objective-c –
@Nag, je pense que vous SQLite devrait simplement traiter ces commandes comme SQL ordinaire, le traiter en conséquence, et vous renvoyer un ensemble de résultats. –