如何在PostgreSQL中通过我的数据库获取列大小和类型

Õzb*_*bek 14 sql postgresql pgadmin

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

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

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

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

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

Red*_*ter 29

INFORMATION_SCHEMA表将在这里帮助你:

select *
from INFORMATION_SCHEMA.COLUMNS
Run Code Online (Sandbox Code Playgroud)

您可以检查table_name,column_name,data_typecharacter_maximum_length在结果集中的列.


Tom*_*ken 5

偶然发现了这个旧帖子。根据RedFilter的答案,这里是对原始问题的查询:

select table_name, 
       column_name 
from INFORMATION_SCHEMA.COLUMNS 
where data_type = 'character varying' 
  and character_maximum_length = 200
Run Code Online (Sandbox Code Playgroud)

将其与以下内容的alter table语法放在一起:

ALTER TABLE X ALTER COLUMN Y TYPE text;
Run Code Online (Sandbox Code Playgroud)

您可以通过运行以下查询来生成所需的所有命令:

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;
Run Code Online (Sandbox Code Playgroud)

希望这对以后的人有所帮助,或者至少可以节省一些时间!