sql >> Databáze >  >> RDS >> PostgreSQL

Překlad dotazu z Firebirdu do PostgreSQL

Postgres má jiný způsob ukládání informací o obsahu systému. Toto se nazývá Systémové katalogy .

Ve Firebirdu váš dotaz v podstatě vrací řádek pro každý sloupec tabulky v každém schématu s dalším sloupcem typu Integer, který se mapuje na datový typ pole.

V Postgresu pomocí systémových tabulek v pg_catalog schema něčeho podobného lze dosáhnout pomocí tohoto dotazu:

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

Výše uvedený dotaz vrací také systémové katalogy. Pokud chcete vyloučit k nim musíte přidat další JOIN do pg_namespace a klauzule where s pg_namespace.nspname <> 'pg_catalog' , protože toto je schéma, kde jsou uloženy systémové katalogy.

Pokud byste také chtěli vidět názvy datových typů místo jejich reprezentativních čísel, přidejte JOIN do pg_type .

Informační schéma se skládá ze sbírky pohledů. Ve většině případů nepotřebujete celý SQL dotaz, který stojí za pohledem, takže použití systémových tabulek vám poskytne lepší výkon. Můžete si však prohlédnout definici pohledů, abyste mohli začít s tabulkami a podmínkami použitými k vytvoření výstupu.



  1. Vybírání dynamických hodnot z HTML formuláře a ukládání do PHP proměnných

  2. Návrh SQL pro průzkum s odpověďmi různých datových typů

  3. Jak mohu spustit soubor SQL a uložit výsledky do souboru txt jedním příkazem?

  4. Počítejte návštěvy do dneška, tohoto týdne, minulého měsíce a celkem [Dotaz MySQL]