sql >> Database >  >> RDS >> PostgreSQL

Query vertalen van Firebird naar PostgreSQL

Postgres heeft een andere manier om informatie over systeeminhoud op te slaan. Dit heet Systeemcatalogi .

In Firebird retourneert uw zoekopdracht in feite een rij voor elke kolom van een tabel in elk schema met een extra integerkolom die is toegewezen aan een veldgegevenstype.

In Postgres met behulp van systeemtabellen in pg_catalog schema kan iets soortgelijks worden bereikt met behulp van deze query:

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

Bovenstaande zoekopdracht retourneert ook systeemcatalogi. Als u wilt uitsluiten ze moet je nog een JOIN toevoegen aan pg_namespace en een waar-clausule met pg_namespace.nspname <> 'pg_catalog' , omdat dit het schema is waarin systeemcatalogi worden opgeslagen.

Als je ook datatypenamen wilt zien in plaats van hun representatieve nummers, voeg dan een JOIN toe aan pg_type .

Informatieschema bestaat uit een verzameling weergaven. In de meeste gevallen hebt u niet de volledige SQL-query nodig die achter de weergave staat, dus het gebruik van systeemtabellen geeft u betere prestaties. U kunt echter de weergavedefinitie inspecteren, om u op weg te helpen met de tabellen en voorwaarden die worden gebruikt om een ​​uitvoer te vormen.



  1. Time-out PostgreSQL-verbinding Operationele fout op Django en nieuwe server

  2. Productiedatabase is niet geconfigureerd

  3. MySQL> Tabel bestaat niet. Maar het doet (of zou moeten)

  4. sql-query om de som te berekenen en de som van vorige rijen toe te voegen