16

質問:

PostgreSQL (コンソールではなく SQL を使用) で、利用可能なすべてのデータタイプを一覧表示するにはどうすればよいですか?

理想的には次のようになります: http://www.java2s.com/Code/PostgreSQL/Postgre-SQL/Displaysalldatatypesintheconnecteddatabasewithcomments.htm

ユーザー定義型がある場合は、それもリストする必要があります。
テーブルの新しい列のデータ型を定義するpgAdmin3のリストと同じです。

4

2 に答える 2

29

PostgreSQL の「データ型」には、実際にはプリミティブ (組み込み) 型、拡張機能によって追加された型、ユーザー定義の複合型、ドメイン、およびテーブルの行型が含まれます。これらのどれがあなたにとって興味があるかは明らかではありません。特定のデータベースで使用可能なすべてのタイプがそのデータベースにリストされているpg_catalog.pg_typeため、結果をフィルタリングする必要がある場合があります。システム カタログ テーブルのドキュメントをpg_type参照してください。

利用可能だがインストールされていない拡張機能のタイプリストされていません。現在のデータベースにインストールされていない拡張機能によって提供される型を一覧表示する方法はありません。

よりきれいなタイプのリストを取得するには、psql\dT *コマンドを使用します。フラグをpsql付けて実行すると、これが実行する基になる SQL を確認できます。-E

$ psql -E regress
regress=> \dT *
********* QUERY **********
SELECT n.nspname as "Schema",
  pg_catalog.format_type(t.oid, NULL) AS "Name",
  pg_catalog.obj_description(t.oid, 'pg_type') as "Description"
FROM pg_catalog.pg_type t
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace
WHERE (t.typrelid = 0 OR (SELECT c.relkind = 'c' FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid))
  AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type el WHERE el.oid = t.typelem AND el.typarray = t.oid)
  AND pg_catalog.pg_type_is_visible(t.oid)
ORDER BY 1, 2;
**************************
于 2013-05-03T00:04:37.547 に答える
17
select * from pg_type;

pg_type

于 2013-05-02T16:41:13.470 に答える