22

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

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

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

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

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

4

2 に答える 2

45

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

select *
from INFORMATION_SCHEMA.COLUMNS

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

于 2010-12-17T15:05:31.017 に答える
8

この古い投稿に出くわしました。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;

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

于 2016-10-06T18:14:00.607 に答える