2010-12-17 19 views
10

以前のデータベースでカラムの長さを手動で変更しました。PostgreSQLのデータベースを使用してカラムのサイズとタイプを取得する方法

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

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

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

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

+3

Postgresqlでは、 "varchar"(長さなし)または "text"(長さなし)を使用して、テキストの長さを処理するテキストフィールドを作成できます。 PostgreSQLでは固定長のテキストフィールドを必要とすることはめったにありません。なぜなら、それは猶予と効率のある任意の長さの文字列を扱うからです。 –

+1

はい、あなたは正しいですが、データのサイズについては何もパフォーマンスに違いはありません –

答えて

24

INFORMATION_SCHEMAテーブルはここであなたを助ける:

select * 
from INFORMATION_SCHEMA.COLUMNS 

あなたは結果セットのtable_namecolumn_namedata_typecharacter_maximum_length列を調べることができます。

1

この古いポストを見つけた。ここRedFilterの答えに基づいて元の質問のためのクエリです:

のALTER TABLE構文と一緒にそれを置く
select table_name, 
     column_name 
from INFORMATION_SCHEMA.COLUMNS 
where data_type = 'character varying' 
    and character_maximum_length = 200 

:あなたはこのクエリを実行することによって、あなたが必要とするすべてのコマンドを生成することができます

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; 

これは将来的に誰かを助けたり、少なくとも時間を節約したいと考えています。

関連する問題