Как написать универсальный код для таблиц объединения за годы? - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть задание Hive ETL, где я должен извлекать данные из годовых таблиц и объединять их.Не спрашивайте, почему существует отдельная таблица для каждого года (устаревшие системы и огромный размер).

Предположим, что имена таблиц - table11, table12,.,., table19

Теперь я могу написать запрос до 'from' table19, но я хочу написать общий код, в противном случае код должен обновляться каждый год.Я считаю, что нельзя использовать подстановочные знаки в предложении from, если я прав.например, table20 *

С наилучшими пожеланиями,

1 Ответ

0 голосов
/ 14 февраля 2019

вы можете использовать подготовленное заявление.Таким образом, вы можете сгенерировать запрос с помощью CONCAT и затем выполнить его.

-- SELECT CONCAT("insert into newtable select * from table",DATE_FORMAT(now(),'%y')) 
SELECT CONCAT(" select * from mysql.user") INTO @sql;
SELECT @sql;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
...