以前のデータベースで列の長さを手動で変更しました。
しかし、HQLを介して新しいデータベースを作成した後、それはvarchar(255)
を作成しているので、それを長くする必要があります。
どのテーブルの列を変更する必要があるかを見つける必要がありますか?
手動で見つけることができますが、現在約200のテーブルがあり、これを行うにはクエリが必要です。
SQLクエリを使用してPostgresで列タイプとその長さを取得するにはどうすればよいですか?
INFORMATION_SCHEMA テーブルはここで役立ちます:
select *
from INFORMATION_SCHEMA.COLUMNS
結果セットのtable_name
、column_name
、data_type
、およびcharacter_maximum_length
列を調べることができます。
この古い投稿に出くわしました。 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;
これが将来誰かを助けるか、少なくとも彼らの時間を節約することを願っています!