Il y a un beaucoup plus simple moyen dans PostgreSQL pour obtenir le type d'une colonne.
SELECT pg_typeof(col)::text FROM tbl LIMIT 1
Le tableau doit contenir au moins une ligne, bien sûr. Et vous n'obtenez que le type de base sans modificateurs de type (le cas échéant). Utilisez l'alternative ci-dessous si vous en avez également besoin.
Vous pouvez également utiliser la fonction pour les constantes. Le manuel sur pg_typeof()
.
Pour une table vide (ou toute table), vous pouvez utiliser la requête du catalogue système pg_attribute
pour obtenir la liste complète des colonnes et leur type respectif dans l'ordre :
SELECT attnum, attname AS column, format_type(atttypid, atttypmod) AS type
FROM pg_attribute
WHERE attrelid = 'myschema.mytbl'::regclass -- optionally schema-qualified
AND NOT attisdropped
AND attnum > 0
ORDER BY attnum;
Le manuel sur format_type()
et sur les types d'identifiant d'objet
comme regclass
.