sql >> Base de Datos >  >> RDS >> PostgreSQL

Traducir consulta de Firebird a PostgreSQL

Postgres tiene otra forma de almacenar información sobre el contenido del sistema. Esto se llama Catálogos del sistema .

En Firebird, su consulta básicamente devuelve una fila para cada columna de una tabla en cada esquema con una columna Integer adicional que se asigna a un tipo de datos de campo.

En Postgres usando tablas del sistema en pg_catalog esquema algo similar se puede lograr usando esta consulta:

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 consulta anterior también devuelve catálogos del sistema. Si desea excluir ellos necesita agregar otro JOIN a pg_namespace y una cláusula where con pg_namespace.nspname <> 'pg_catalog' , porque este es el esquema donde se almacenan los catálogos del sistema.

Si también desea ver los nombres de los tipos de datos en lugar de sus números representativos, agregue un JOIN a pg_type .

Esquema de información consiste en una colección de vistas. En la mayoría de los casos, no necesita la consulta SQL completa que se encuentra detrás de la vista, por lo que el uso de tablas del sistema le brindará un mejor rendimiento. Sin embargo, puede inspeccionar la definición de vistas, solo para comenzar con las tablas y las condiciones utilizadas para formar una salida.