Как изменить тип столбца в Redshift

#sql #amazon-web-services #amazon-redshift #ddl

Вопрос:

Я создал таблицы, а затем мне захотелось изменить типы столбцов.

Сейчас, когда я вижу DDL или его схему, столбец units определяется следующим образом.

units varchar(100) NULL encode lzo

Я хотел бы изменить такие, как numeric(12,0) . Так что я попытался следовать

ALTER TABLE table1 ALTER COLUMN units TYPE numeric(12,0);

Но он вернул следующую ошибку

Invalid operation: target data type "pg_catalog.numeric" is not supported;

В чем основная причина этого?

И как это исправить?

Я подтвердил numeric , что это определено в некоторых схемах таблиц.

Если у кого-то есть мнение или комментарий, пожалуйста, дайте мне знать, спасибо.

Комментарии:

1. Есть некоторые ограничения, упомянутые в ALTER TABLE — Amazon Redshift -интересно, влияют ли они на вашу колонку? Например, тип сжатия, значение по умолчанию, УНИКАЛЬНЫЙ, ПЕРВИЧНЫЙ КЛЮЧ или ВНЕШНИЙ КЛЮЧ. Возможно, вам потребуется создать новый столбец и использовать ОБНОВЛЕНИЕ для преобразования значений. Затем удалите исходный столбец и переименуйте его обратно в исходный. Если вы сделаете это, также выполните ОЧИСТКУ таблицы, так как операция обновления фактически создает новые строки и помечает старые строки для удаления.