sql >> Database teknologi >  >> RDS >> PostgreSQL

Oversættelse af forespørgsel fra Firebird til PostgreSQL

Postgres har en anden måde at gemme information om systemindhold på. Dette kaldes Systemkataloger .

I Firebird returnerer din forespørgsel dybest set en række for hver kolonne i en tabel i hvert skema med en ekstra heltalskolonne, der er knyttet til en feltdatatype.

I Postgres ved hjælp af systemtabeller i pg_catalog skema noget lignende kan opnås ved hjælp af denne forespørgsel:

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

Ovenstående forespørgsel returnerer også systemkataloger. Hvis du vil udelukke dem skal du tilføje endnu et JOIN til pg_namespace og en where-klausul med pg_namespace.nspname <> 'pg_catalog' , fordi dette er skemaet, hvor systemkataloger er gemt.

Hvis du også gerne vil se datatypenavne i stedet for deres repræsentative numre, skal du tilføje en JOIN til pg_type .

Informationsskema består af indsamling af synspunkter. I de fleste tilfælde har du ikke brug for hele SQL-forespørgslen, der står bag visningen, så brug af systemtabeller vil give dig bedre ydeevne. Du kan dog inspicere visningsdefinitionen bare for at komme i gang med de tabeller og betingelser, der bruges til at danne et output.



  1. tilføjelse af kodningsinformation til resultatet af FOR XML

  2. MySQL-krypterede kolonner

  3. Er der en enklere måde at finde MODE(S) af nogle værdier i MySQL

  4. mysqli_connect():(HY000/2003):Kan ikke oprette forbindelse til MySQL-server på 'domænenavn' (111)