
No.2ベストアンサー
- 回答日時:
#1回答者です。
PostgreSQLはデータ型が豊富なためか、システムカタログの参照方法が分かりにくいですね。
表中にシステム用の列も作っており、そのまま定義情報を検索すると、ユーザの定義列と一緒に情報を拾ってしまいます。
#1のSQLから、対応するデータ型の追加、「_bpchar」→「char」といった表示変更をするようにしました。
#1と併せて実行してもらえると、違いが分かりやすいと思います。
select
relname as 表名,
attname as 列名,
attnum as 列番,
case typname
when '_bpchar' then 'char'
when '_varchar' then 'varchar'
when '_date' then 'date'
when '_float8' then 'float8'
when '_int4' then 'integer'
when '_interval' then 'interval'
when '_numeric' then 'numeric'
when '_float4' then 'float4'
when '_int2' then 'smallint'
when '_text' then 'text'
when '_time' then 'time'
when '_timestamp' then 'timestamp'
end as 型,
case typname
when '_bpchar' then atttypmod - 4
when '_varchar' then atttypmod - 4
when '_numeric' then (atttypmod - 4) / 65536
else attlen
end as 長さ,
case typname
when '_numeric' then (atttypmod - 4) % 65536
else 0
end as 小数
from pg_stat_user_tables as a,
pg_attribute as b,
pg_type as c
where schemaname='u1'
and relname='t1'
and a.relid=b.attrelid
and b.attnum>0
and b.atttypid=c.typelem
and substr(typname,1,1)='_'
order by schemaname,relname,attnum;
chukenkenkouさん、こんばんは。二度も助けて頂いて恐縮です。
ちょっとバタバタとしており、お返事が遅くなったこと、また、せっかく
ご回答を戴いたのに、未だ自分自身で確認ができておりませんことを
お詫び致しますm(_ _)m
近日中に自分自身の手で確認してみようと思います。
いつも丁寧なご回答を戴き、本当にありがとうございます。
No.1
- 回答日時:
列の定義長は、intやdateなど固定もものは、pg_attribute表のattlen列に入っています。
charやvarchar,decimalなどは、pg_attribute表のatttypmod列に入っています。
(長さを管理するための4バイトが、付加されています)
データ型の種類(char,varchar等)は、pg_type表のtypname列に入っています。
ただ、格納形式はcharの場合、「_bpchar」のように入っています。
【試作したSQL】
select
relname as 表名,
attname as 列名,
attnum as 列番,
typname as 型,
case typname
when '_bpchar' then atttypmod - 4
when '_varchar' then atttypmod - 4
when '_numeric' then (atttypmod - 4) / 65536
when '_decimal' then (atttypmod - 4) / 65536
else attlen
end,
case typname
when '_numeric' then (atttypmod - 4) % 65536
when '_decimal' then (atttypmod - 4) % 65536
else 0
end
from pg_stat_user_tables as a,
pg_attribute as b,
pg_type as c
where schemaname='u1'
and a.relid=b.attrelid
and b.attnum>0
and b.atttypid=c.typelem
order by schemaname,relname,attnum;
●他の方が作成していたSQL
http://www.shonan.ne.jp/~nkon/cslpg.a.semi/mgp00 …
●pg_attribute表
http://www.postgresql.jp/document/pg801doc/html/ …
●pg_type表
http://www.postgresql.jp/document/pg801doc/html/ …
このコミュニティーを上手く使いこなせていないので、お礼のやり方が変に
なりましたが、どうしてもお礼が言いたかったので、ここに記入しました。
chukenkenkouさん、いつも的確なご返答を戴き大変感謝しております。
#2の方法で、必要としている情報が一目瞭然でした。本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- Oracle Oracleですがsqlで質問です。 サブクエリ内で番号というカラムで昇順の1レコード目を取得したい 3 2023/05/22 10:02
- PostgreSQL 列が存在しないと言われる 2 2023/02/10 18:33
- その他(プログラミング・Web制作) pythonでDBのカラム名で取得したオブジェクトの値を表示したい 1 2022/05/13 03:41
- MySQL SQLについて教えて下さい。 SELECT分で、あるカラムにある日付の 半年先のデータを取って来たい 3 2022/12/07 22:28
- その他(プログラミング・Web制作) google formsで回答者をスプレッドシートに記載する方法 1 2023/06/23 11:22
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- Oracle SQLの書き方について 1 2023/04/13 09:54
- 化学 陰イオン交換クロマトグラフィーについて 陰イオン錯体の形成による分離の実験を行いました。 試料溶液中 1 2023/04/30 18:29
- IT・エンジニアリング ドメイン駆動設計の値オブジェクトについて質問 1 2023/05/13 02:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ストアードプロシジャーを見た...
-
PostgreSqlのシステムスキーマ...
-
シーケンスのリストを取得したい。
-
ACCESSにおいてスキーマとは
-
データベース ユーザの「このユ...
-
PG_QUERY
-
【SQL】他テーブルに含まれる値...
-
貸家のデータベース
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
-
sqlに記述できない文字
-
データの入れ替えを同時に行な...
-
SELCTを使って違うテーブルのデ...
-
SQLで一定時間周期毎の抽出方法...
-
SQLで、Join句で結合したテ...
-
mdf&ldfファイルからフラット...
-
Java環境で使用するAccessデー...
-
固定長のデータをmysqlで取り込...
-
オラクルのUPDATEで複数テーブル
-
truncate tableを使って複数の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベース ユーザの「このユ...
-
dumpでインデックスだけ抜きたい
-
ACCESSにおいてスキーマとは
-
全テーブルの列数を調査したい
-
DB2でテーブルのサイズを見たい
-
認知心理学で言うスクリプトとは?
-
PostgreSqlのシステムスキーマ...
-
ORACLEのスキーマーを別のORACL...
-
SQL ServerのXMLスキーマがうま...
-
カラムサイズの取得
-
FROM句のスキーマ名、テーブル...
-
PostgreSqlシステムカタログを...
-
EBCDICとCCSIDの違いとは
-
DBをまたいで更新
-
スキーマ定義とは一体どう言っ...
-
access2000からPostgresSQLのテ...
-
アクセスのレポートの表示順
-
【SQL】他テーブルに含まれる値...
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
おすすめ情報