Как использовать alter table drop columns для столбцов, присутствующих в списке?

#python #sql #snowflake-cloud-data-platform #alter-table #snowsql

#python #sql #snowflake-cloud-data-platform #alter-table #snowsql

Вопрос:

У меня есть список всех имен столбцов, которые нужно удалить из нескольких таблиц в схеме, но не все имена столбцов в списке присутствуют во всех таблицах.

Для схемы и имени таблицы, которые у меня есть, могу ли я в одном запросе проверить, соответствуют ли столбцы именам столбцов в списке, просто отбросьте это

Допустим, список столбцов для удаления равен

 Drop_col = ['AB',' BC', FG', 'TR']
  

Но в моей TABLE1 в списке столбцов есть только ‘BC’, ‘TR’

 Query =  ALTER TABLE SCHEMA_NAME.TABLE1 DROP COLUMN IN ({Drop}).format (Drop = Drop_col)
  

Что-то вроде этого?? или какие-либо другие предложения??

Ответ №1:

Для достижения этого вы можете использовать представление СТОЛБЦОВ и хранимую процедуру.

1- Передайте список столбцов в хранимую процедуру

2- Используя COLUMNS view, получаем список таблицы, результаты столбца

3- Выполните итерацию по результирующему набору и удалите столбцы

https://docs.snowflake.com/en/sql-reference/info-schema/columns.html

https://community.snowflake.com/s/article/How-to-scan-Result-set-in-stored-procedures

https://community.snowflake.com/s/article/Select-columns-based-on-condition-in-Snowflake-using-Information-Schema-and-Stored-Procedure

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

1. Я не хочу использовать хранимые процедуры