kettle-pdi-ce-9.0.0.0读取数据步骤
- 9.0.0.0版本MYSQL连接需要下载mysql-connector-java-5.1.48.jar要不总提示驱动问题
用5.1.48数据量小可以多的话需要用mysql-connector-java-5.1.49. jar
2.配置数据库连接

配置数据库连接参数


数据库数据量少话可以直接配置连接:jdbc:dm://1.1.2.2:1003
数据量多内存问题用下面的连接:
jdbc:dm://1.1.2.1:1003/db?useCursorFetch=true&defaultFetchSize=10000&useSSL=false&rewriteBatchedStatements=true
- 转换设置

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

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

点击步骤

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


输出设置

点击运行这个转换开始导入数据。
任务计划




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


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

使用带参数的输入
具体步骤:
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

注意达梦兼容oracle时的字符串,比如:where id<>'',应该写 where id is not null
2、放一个字段选择,把update_time日期时间转成字符串格式。
旁边那个【获取字段】很省事。

3、再放一个写日志,输出看看。
发现写日志里的sql变量不会被替换,总是1900-01-01,找了很多办法不管用。
那个【获取字段】也很方便。

4、设置变量,这是关键一步。
点获取字段。

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实现的。字段逐个替换。

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

ID为主键。根据ID查找更新,找不到则新增,所以下面更新字段里,应该也写上ID,要不会报错新增时ID为空。
7、运行起来看日志:

能看到详细sql日志:


浙公网安备 33010602011771号