如何 pull/read 来自外部 SQL 服务器的数据批量存储在一个 kdb+ table 中
How to pull/read data from an external SQL server in batches ard store all in one kdb+ table
我们有一个外部 PostgreSQL 服务器,我们在其中使用 odbc 提取数据。我们通常会根据需要分块提取数据,因此有时会提取所有日期 "where date > (some specific date)" 或 "where id > (some specified id)" 或特定日期之间的数据(如 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 = 服务器名称
您能否在 kdb 端创建日期批次并为每个批次生成一个 startDate-endDate 查询?例如从 2002.01.01
开始创建 5 年的 start/end 日期
q){(`date$s),'-1+`date+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
我想您还必须遍历服务器上的每个 table。
我们有一个外部 PostgreSQL 服务器,我们在其中使用 odbc 提取数据。我们通常会根据需要分块提取数据,因此有时会提取所有日期 "where date > (some specific date)" 或 "where id > (some specified id)" 或特定日期之间的数据(如 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 = 服务器名称
您能否在 kdb 端创建日期批次并为每个批次生成一个 startDate-endDate 查询?例如从 2002.01.01
开始创建 5 年的 start/end 日期q){(`date$s),'-1+`date+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
我想您还必须遍历服务器上的每个 table。