sql >> データベース >  >> RDS >> PostgreSQL

クエリをFirebirdからPostgreSQLに変換する

    Postgresには、システムコンテンツに関する情報を保存する別の方法があります。これは、システムカタログ と呼ばれます。 。

    Firebirdでは、クエリは基本的に、すべてのスキーマのテーブルのすべての列の行と、フィールドデータ型にマップする追加の整数列を返します。

    Postgresでpg_catalogのシステムテーブルを使用 このクエリを使用して、同様のスキーマを実現できます:

    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
    

    上記のクエリは、システムカタログも返します。 除外したい場合 pg_namespaceに別のJOINを追加する必要があります pg_namespace.nspname <> 'pg_catalog'を含むwhere句 、これはシステムカタログが保存されるスキーマであるためです。

    代表的な番号の代わりにデータ型名も表示したい場合は、pg_typeにJOINを追加してください 。

    情報スキーマ ビューのコレクションで構成されます。ほとんどの場合、ビューの背後にあるSQLクエリ全体は必要ないため、システムテーブルを使用するとパフォーマンスが向上します。ただし、出力の形成に使用されるテーブルと条件を開始するために、ビューの定義を調べることはできます。



    1. Select(PostgreSQL / pgAdmin)でブール値をTRUEまたはFALSEとして返します

    2. SQL-IF EXISTS UPDATEELSEINSERT構文エラー

    3. 通知は何ですか:リソースID#9?

    4. SQLServerのメモリ最適化テーブルでのインデックスの使用