Как получить размер столбца и тип через мою базу данных в PostgreSQL

Я изменил длину столбца вручную в своей предыдущей базе данных.

Но после создания новой базы данных через HQL это создало varchar(255), и мне нужно сделать это дольше.

Мне нужно найти, какой столбец таблицы следует изменить?

Я могу найти его вручную, но теперь у меня около 200 таблиц, и мне нужен запрос для этого.

Как я могу получить тип столбца и его длину в Postgres с помощью SQL-запроса?

Ответ 1

Таблицы INFORMATION_SCHEMA помогут вам:

select *
from INFORMATION_SCHEMA.COLUMNS

В результирующем наборе можно просмотреть столбцы table_name, column_name, data_type и character_maximum_length.

Ответ 2

Наткнулся на этот старый пост. На основании ответа 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;

Надеюсь, это поможет кому-то в будущем или, по крайней мере, сэкономит им некоторое время!