Как получить / прочитать данные с внешнего сервера SQL в пакетном режиме и хранить все в одной таблице kdb + - PullRequest
0 голосов
/ 06 марта 2020

У нас есть внешний PostgreSQL сервер, с которого мы извлекаем данные из odb c. Обычно мы извлекаем данные кусками по мере необходимости, поэтому иногда извлекаем всю дату «где дата> (некоторые указывают c дата)» или «где идентификатор> (некоторые указывают идентификатор)» или между определенными датами (например, start_date и end_date). Пример кода ниже

Вышеуказанные условия довольно просты и могут быть реализованы без чрезмерной нагрузки на сервер.

Но это другая история, когда нам нужно извлечь все данные сервера (слишком много данных на сервере). Есть ли способ получить данные с сервера в пакетном режиме, чтобы не перегружать сервер?

Ниже приведен пример, который мы используем для

getdata:{[]
 query: "select data.id, data.first_name, data.last_name, data.email, data.created_at from data  where data.created_at > '2020-02-04' order by id asc" ];
 us::.odbc.open `dbs;
 leads::.odbc.eval[us; query];
 .odbc.close us;
 };

dbs = имя сервера

1 Ответ

0 голосов
/ 11 марта 2020

Не могли бы вы создать пакеты дат на стороне kdb и сгенерировать запрос startDate-endDate для каждого? например, создать 5 лет дат начала / окончания, начинающихся с 2002.01.01

q){(`date$s),'-1+`date$12+s:(12*til y)+`month$x}[2002.01.01;5]
2002.01.01 2002.12.31
2003.01.01 2003.12.31
2004.01.01 2004.12.31
2005.01.01 2005.12.31
2006.01.01 2006.12.31

Я полагаю, вам также потребуется l oop для каждой таблицы на сервере.

...