Динамическое имя таблицы в красном смещении
У меня есть несколько таблиц с похожими именами, но с разными префиксами: 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
таблица и использование представлений для создания версий для конкретной страны.:)