Следующая works in Postgres 9.6 но не в Redshift:Redshift: добавить столбец, если не существует
ALTER TABLE stats
ADD COLUMN IF NOT EXISTS panel_exit timestamp;
Может же функциональность быть достигнуто в Redshift?
Следующая works in Postgres 9.6 но не в Redshift:Redshift: добавить столбец, если не существует
ALTER TABLE stats
ADD COLUMN IF NOT EXISTS panel_exit timestamp;
Может же функциональность быть достигнуто в Redshift?
Нет команды Amazon Redshift, эквивалентной ADD COLUMN IF NOT EXISTS
.
Чтобы повторить эту функцию, приложение в первую очередь необходимо запросить метаданные таблицы, а затем принять решение о выдаче команды 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 для более подробной информации.