指定したカラム名が存在するかチェックし、カラム名が存在するテーブル名を一覧で取得する方法を紹介します。
PostgreSQLのシステムテーブルを利用することで取得することが可能です。
ぜひ最後まで読んでみてください。
指定したカラムの存在チェックを行う
ここでは情報スキーマ(information_schema)のcolumnsテーブルを使います。
PostgreSQLの情報スキーマ(information_schema)とは、データベースのシステム情報(メタデータ)を参照するための標準インターフェースの事です。
- 情報スキーマは、現在のデータベースで定義されたオブジェクトについての情報を持つビューの集合である。
- 情報スキーマは、標準SQLで定義されているので他のデータベースにも存在する。
- PostgreSQLに特化した情報を調べるためには,情報スキーマではなく,システムカタログを使う。
情報スキーマのcolumnsテーブルには、テーブル内のカラムに関する情報を取得します。
columnsテーブルのカラムには次のようなものがあります。
カラム名 | 説明 |
table_name | カラムを含むテーブルの名前 |
column_name | カラムの名前 |
table_schema | カラムを含むテーブルが属するスキーマの名前 |
ordinal_postion | テーブル内のカラムの位置 |
column_type | カラムのデータ型 |
column_commnet | カラム定義に含まれるコメント |
privileges | カラムに対して持っている権限 |
情報スキーマを使って、指定したカラム名が存在するテーブル名を取得するSQL文は以下になります。
[jin-fusen2 text=”カラム名の存在チェックをするSQL文”]
select table_name from information_schema.columns where column_name = ‘[カラム名]’;
このSQL文をコマンドプロンプトを使って実行してみましょう。
Windows OSの場合は、PostgreSQLのコマンドをコマンドプロンプトで実行できるように設定が必要です。設定が完了していない場合は以下のリンクから設定を行っておきましょう。
データベースには、次のようなカラム構成で作成されたテーブルが存在します。
ここでは、「serial_number」というカラム名を指定し、このカラム名が含まれるテーブル名を取得します。
テーブル名 | カラム1 | カラム2 | カラム3 |
sample1 | id | passtime | model_number |
sample2 | di | passtime | serial_number |
sample3 | id | passtime | character_number |
では実行してみましょう。
[jin-img-waku]
[/jin-img-waku]
狙い通り sample2 が検索結果として表示されました。
最後に
情報スキーマを使えば他にもカラム一覧を取得したり、テーブルにあるカラムの一覧を取得することが可能です。
[jin-fusen2 text=”データベース内のカラム一覧を取得するSQL文”]
select distinct column_name from information_schema.columns where table_schema = ‘public’;
[jin-img-waku]
[/jin-img-waku]
[jin-fusen2 text=”テーブル内のカラム一覧を取得するSQL文”]
select column_name from information_schema.columns where table_name='[テーブル名]’;
[jin-img-waku]
[/jin-img-waku]
こちらの記事もおすすめですので、参考にしてみてください。
以上、最後まで読んで頂きありがとうございました。