Ответ 1
Таблицы INFORMATION_SCHEMA помогут вам:
select *
from INFORMATION_SCHEMA.COLUMNS
В результирующем наборе можно просмотреть столбцы table_name
, column_name
, data_type
и character_maximum_length
.
Я изменил длину столбца вручную в своей предыдущей базе данных.
Но после создания новой базы данных через HQL это создало varchar(255)
, и мне нужно сделать это дольше.
Мне нужно найти, какой столбец таблицы следует изменить?
Я могу найти его вручную, но теперь у меня около 200 таблиц, и мне нужен запрос для этого.
Как я могу получить тип столбца и его длину в Postgres с помощью SQL-запроса?
Таблицы INFORMATION_SCHEMA помогут вам:
select *
from INFORMATION_SCHEMA.COLUMNS
В результирующем наборе можно просмотреть столбцы table_name
, column_name
, data_type
и character_maximum_length
.
Наткнулся на этот старый пост. На основании ответа 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;
Надеюсь, это поможет кому-то в будущем или, по крайней мере, сэкономит им некоторое время!