PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Traduire une requête de Firebird vers PostgreSQL

Postgres a une autre façon de stocker des informations sur le contenu du système. Cela s'appelle Catalogues système .

Dans Firebird, votre requête renvoie essentiellement une ligne pour chaque colonne d'une table dans chaque schéma avec une colonne Integer supplémentaire qui correspond à un type de données de champ.

Dans Postgres en utilisant les tables système dans pg_catalog schéma quelque chose de similaire peut être réalisé en utilisant cette requête :

SELECT 
  TRIM(c.relname) AS table_name, TRIM(a.attname) AS column_name, a.atttypid AS field_type
FROM pg_class c
LEFT JOIN pg_attribute a ON 
  c.oid = a.attrelid
  AND a.attnum > 0 -- only ordinary columns, without system ones
WHERE c.relkind = 'r' -- only tables
ORDER BY 1,2

La requête ci-dessus renvoie également les catalogues système. Si vous souhaitez exclure vous devez ajouter un autre JOIN à pg_namespace et une clause where avec pg_namespace.nspname <> 'pg_catalog' , car il s'agit du schéma dans lequel les catalogues système sont stockés.

Si vous souhaitez également voir les noms des types de données au lieu de leurs numéros représentatifs, ajoutez un JOIN à pg_type .

Schéma d'informations consiste en une collection de vues. Dans la plupart des cas, vous n'avez pas besoin de la totalité de la requête SQL qui se trouve derrière la vue, donc l'utilisation de tables système vous donnera de meilleures performances. Vous pouvez cependant inspecter la définition des vues, juste pour vous familiariser avec les tables et les conditions utilisées pour former une sortie.