kettle-pdi-ce-9.0.0.0读取数据步骤

  1. 9.0.0.0版本MYSQL连接需要下载mysql-connector-java-5.1.48.jar要不总提示驱动问题

用5.1.48数据量小可以多的话需要用mysql-connector-java-5.1.49. jar

2.配置数据库连接

 

image

 

配置数据库连接参数

 

image

 

 

 

 

image

 

数据库数据量少话可以直接配置连接:jdbc:dm://1.1.2.2:1003

数据量多内存问题用下面的连接:

jdbc:dm://1.1.2.1:1003/db?useCursorFetch=true&defaultFetchSize=10000&useSSL=false&rewriteBatchedStatements=true

  1. 转换设置

 

image

 

输入选择【表输入】鼠标拖拽到右边面板上。

 

image

 

输出需要导入数据选择【表输出】

 

image

 

 

点击步骤

 

image

 

下拉选择前面创建好的数据库连接(表输入是数据源)sql窗口写导入的

 

image

 

 

 

image

 

 

输出设置

 

image

点击运行这个转换开始导入数据。

任务计划

 

image

 

 

 

image

 

image

 

image

 

 

手动运行试试设置,手动不需要选择重复类型。

 

image

 

 

image

 

 

或者是直接插入是清空表再插入

 

image

 

 

 

 

使用带参数的输入

具体步骤:

1、从目的表里查出来最大的update_time:

先放上一个表输入,sql这样写,查出来最大的更新时间:

select top 1 TO_CHAR(UPDATE_DT,'YYYY-MM-DD HH24:MI:SS') as UPDATE_TIME
from FEE_MAIN as main
where id is not null
order by UPDATE_DT desc

 

image

注意达梦兼容oracle时的字符串,比如:where id<>'',应该写 where id is not null 

 

 2、放一个字段选择,把update_time日期时间转成字符串格式。

旁边那个【获取字段】很省事。

image

 

 

 3、再放一个写日志,输出看看。

发现写日志里的sql变量不会被替换,总是1900-01-01,找了很多办法不管用。

那个【获取字段】也很方便。

image

 

 4、设置变量,这是关键一步。

点获取字段。

image

 5、表输入,真正的读取数据的一步。

从步骤插入数据,选择上一步【设置变量】。

SQL写:

select * 
from FEE_MAIN as main 
where dt>='2006-1-1' and Update_Time>? 
order by update_time

按照查到的资料,SQL里的占位符也可以写Updae_Time>'${UPDATE_TIME}',但是我一直没成功,转换出来的sql总是Update_Time>'1900-1-1'。

用 ? 没问题。估计内部是用string.format实现的。字段逐个替换。

image

 

 

 6、输出。

这个就输出到表、文件,都可以了。

image

 ID为主键。根据ID查找更新,找不到则新增,所以下面更新字段里,应该也写上ID,要不会报错新增时ID为空。

 

7、运行起来看日志:

image

 能看到详细sql日志:

image

 

posted @ 2026-09-04 08:31  海宏软件  阅读(8)  评论(0)    收藏  举报