mercredi 21 juillet 2010
Je cherchais un moyen d'écrire une requête SQL qui me permettrait d'obtenir, à partir des tables systèmes de Postgres, la liste des champs d'une table et leurs types.
À mon premier essai, j'ai pu les afficher avec cette requête :
SELECT col.attname, t.typnameJusqu'à ce que je me mette à utiliser le information_schema qui me permet d'aller chercher plus de détails :
FROM pg_attribute as col
INNER JOIN pg_class as tbl ON col.attrelid = tbl.oid
INNER JOIN pg_type as t ON t.oid = col.atttypid
WHERE tbl.relname = 'tablename'
AND col.attnum > 0
SELECT column_name, data_type, is_nullable, character_maximum_length, udt_nameBeaucoup plus simple, sans avoir besoin de se casser le bicycle avec la mécanique interne de Postgres.
FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'tablename'
ORDER BY ordinal_position
merci pour l'astuce !