使用kettle按天抽取数据

需求背景:

   因xx需求要导出数据,研发给到一个A JOIN B JOIN C + dependent query 的复杂查询。直接查询的话,特别慢(可能小时级别都出不来结果)。分析了下这个查询中,如果在where条件中拼上个驱动表的索引列(例如主键列或者create_time列之类), 可以将join的数据集控制在一个很小的范围内。

这个方法有了后,我们可以用程序去跑,也可以用kettle去跑。

下面是用kettle 按天去跑的案例, 为了演示做了很多精简。

1、生成一个按天的序列(可以参考这个方法 http://blog.csdn.net/neweastsun/article/details/43866599)

2、将day传到查询sql中,得到某一个的数据集

3、将step2的数据集写到一个临时的表里面

4、重复执行step2、step3

5、最后将临时表的数据导出

job如下图:

使用kettle按天抽取数据

使用kettle按天抽取数据

使用kettle按天抽取数据

注意的是,中文乱码的问题解决方法:

1、修改数据源的选项,加上字符集设置

使用kettle按天抽取数据

2、修改kettle启动文件,以win环境下为例,修改 Spoon.bat ,增加如下:

使用kettle按天抽取数据

发表评论

相关文章