web-dev-qa-db-ja.com

PostgreSQLのデータベースから列のサイズとタイプを取得する方法

以前のデータベースで列の長さを手動で変更しました。

しかし、HQLを介して新しいデータベースを作成した後、それはvarchar(255)を作成しているので、それを長くする必要があります。

どのテーブルの列を変更する必要があるかを見つける必要がありますか?

手動で見つけることができますが、現在約200のテーブルがあり、これを行うにはクエリが必要です。

SQLクエリを使用してPostgresで列タイプとその長さを取得するにはどうすればよいですか?

16
Õzbek

INFORMATION_SCHEMA テーブルはここで役立ちます:

select *
from INFORMATION_SCHEMA.COLUMNS

結果セットのtable_namecolumn_namedata_type、およびcharacter_maximum_length列を調べることができます。

28
RedFilter

この古い投稿に出くわしました。 RedFilterの回答に基づいて、元の質問のクエリを次に示します。

select table_name, 
       column_name 
from INFORMATION_SCHEMA.COLUMNS 
where data_type = 'character varying' 
  and character_maximum_length = 200

次のALTERTABLE構文と組み合わせます。

ALTER TABLE X ALTER COLUMN Y TYPE text;

このクエリを実行すると、必要なすべてのコマンドを生成できます。

select 'ALTER TABLE ' || table_name || ' ALTER COLUMN ' || column_name || ' TYPE text;'  
from INFORMATION_SCHEMA.COLUMNS 
where data_type = 'character varying' 
  and character_maximum_length = 200;

これが将来誰かを助けるか、少なくとも彼らの時間を節約することを願っています!

4
Tom Gerken