我在以前的数据库中手动更改了列长度。
但是在通过HQL创建新数据库后,它正在创建varchar(255)
,我需要让它更长。
我需要找到我应该更改哪个表的列?
我可以手动找到它,但现在我有大约200个表,我需要一个查询来执行此操作。
如何使用SQL查询在Postgres中获取列类型及其长度?
答案 0 :(得分:26)
INFORMATION_SCHEMA表格可以帮助您:
select *
from INFORMATION_SCHEMA.COLUMNS
您可以检查结果集中的table_name
,column_name
,data_type
和character_maximum_length
列。
答案 1 :(得分:4)
偶然发现了这个老帖子。基于RedFilter的答案,这里是对原始问题的查询:
select table_name,
column_name
from INFORMATION_SCHEMA.COLUMNS
where data_type = 'character varying'
and character_maximum_length = 200
将其与alter table语法:
放在一起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;
希望这可以帮助将来的某个人,或者至少为他们节省一些时间!