Cor4win
@Cor4win
Изучаю android-разработку

Как автоматизировать выполнение sql скрипта(vertica)?

Есть задача сделать выгрузку данных из бд, сейчас в скрипте вручную указывается город и кол-во требуемых записей - обрезается limit'ом.
У меня соответственно имеется excel таблица A со списком городов и лимитами для каждого из них.
Как это дело можно автоматизировать? Т.е. грубо говоря, чтобы скрипт выполнился столько раз, сколько городов в таблице A и чтобы при каждом выполнении подставлялся очередной город и его лимиты в сам скрипт.

Первая мысль это закинуть список городов в csv, создать из него временную таблицу, добавить inner join к скрипту по городам из этой таблицы, таким образом получаем данные по всем нужным городам, но как быть с лимитами, как потом оставить лишь нужное кол-во записей... (делать это потом вручную в excel - не вариант)

Вроде dynamic sql подходит под задачу, но в vertica не поддерживается.
  • Вопрос задан
  • 225 просмотров
Решения вопроса 1
TheRonCronix
@TheRonCronix
Залить csv это хорошая идея.
Эффект limit можно достичь аналитическими функциями, e.g.

select * 
from
(
  select ROW_NUMBER() OVER (PARTITION BY t.city) as limit_num,
     t.city
     t. ...
  from
  (
    select city, ...
    from      my_table m   join   cities c   on   c.city = m.city
  ) as t
) tt
where tt.limit_num <= 1000;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы