Динамическое имя таблицы в красном смещении

У меня есть несколько таблиц с похожими именами, но с разными префиксами: us_cities, ca_cities и uk_cities. Каждая из этих таблиц состоит только из одного столбца (City_name). Я хочу объединить все эти таблицы вместе и получить такой результат:

select 'US' as country, City_name from US_cities
union all
select 'CA' as country, City_name from CA_cities
union all
select 'UK' as country, City_name from UK_cities

В будущем у меня будет больше таблиц городов для большего числа стран, и я хочу динамический запрос / представление, которое определит соответствующие таблицы (*_cities) и добавит их в запрос объединения. Как я могу сделать это в Redshift?

1 ответ

Решение

Вы можете использовать information_schema.tables table, чтобы получить список таблиц, которые соответствуют вашему соглашению об именах. Однако вам потребуется внешний процесс для замены вашего представления.

SELECT * FROM information_schema.tables WHERE table_name LIKE '%_cities';

ИМХО, тебе было бы намного лучше иметь один cities таблица и использование представлений для создания версий для конкретной страны.:)

Другие вопросы по тегам