22

我在以前的数据库中手动更改了列长度。

但是在通过 HQL 创建新数据库之后,它正在创建varchar(255),我需要让它更长。

我需要找到我应该更改哪个表的列?

我可以手动找到它,但现在我有大约 200 个表,我需要一个查询来执行此操作。

如何使用 SQL 查询在 Postgres 中获取列类型及其长度?

4

2 回答 2

45

INFORMATION_SCHEMA表将在这里为您提供帮助:

select *
from INFORMATION_SCHEMA.COLUMNS

您可以检查结果集中的、table_namecolumn_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

将它与以下的 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;

希望这对将来的某人有所帮助,或者至少为他们节省一些时间!

于 2016-10-06T18:14:00.607 回答