Следующий работает в Postgres 9.6, но не в Redshift:
ALTER TABLE stats
ADD COLUMN IF NOT EXISTS panel_exit timestamp;
Можно ли добиться такой же функциональности в Redshift?
Следующий работает в Postgres 9.6, но не в Redshift:
ALTER TABLE stats
ADD COLUMN IF NOT EXISTS panel_exit timestamp;
Можно ли добиться такой же функциональности в Redshift?
Команды Amazon Redshift, эквивалентной ADD COLUMN IF NOT EXISTS
, не существует.
См.: документацию по ALTER TABLE.
Чтобы воспроизвести эту функциональность, ваше приложение сначала должно запросить метаданные таблицы, а затем принять решение о том, следует ли выдавать команду ADD COLUMN
.
Ответ Джона направил меня в правильном направлении, вот команда, которую я нашел лучше всего работающей в Redshift для проверки существования столбца.
SELECT EXISTS(
SELECT * FROM pg_table_def
WHERE schemaname = '<my_schema_name>'
and tablename = '<my_table_name>'
and "column" = '<my_column_name>'
);
Обратите внимание, что двойные кавычки вокруг «столбца» необходимы, поскольку column
также является ключевым словом.
Кроме того, если интересующая вас таблица не находится в схеме public
. Возможно, вам придется сначала изменить путь поиска, чтобы результаты возвращались должным образом:
set SEARCH_PATH to <schema_name>;
Подробнее см. в PG_TABLE_DEF AWS Docs.