
resultgetrows不是获取trans流程里面‘流动’的数据的。trans里面有个‘复制记录到结果’插件,输出到里面的数据,通过resultgetrows就能获取。java中获取结果集ResutSet的总条数,可以直接使用其提供的getRow方法来取得,实例如下:
1 Join Rows (cartesian product)
a>从多个数据源获取数据
b>指定一个主数据源,指定对主数据源的筛选条件
c>从主数据源取一条数据。如果不符合筛选条件,则丢弃;如果符合筛选条件,把其它数据源的数据循环添加到这条数据后面。
d>从主数据源取下一条数据,重复c步骤,直到主数据源数据取完。
类似SQL(Kettle执行结果与SQL是一致的)如下:
--无筛选
SELECT
FROM
TEST_JOIN_1 A
JOIN TEST_JOIN_2 B
JOIN TEST_JOIN_3 C
;
--有筛选
SELECT
FROM
TEST_JOIN_1 A
JOIN TEST_JOIN_2 B
JOIN TEST_JOIN_3 C
WHERE
AID = ‘123‘
AND ANAME = ‘Lio5n‘
;
2 Merge Join
a>从两个数据源获取数据
b>逐行对两个数据源数据进行关联(包括:内、左、右、外关联),以关键字想等为条件。
类似SQL(Kettle执行结果与SQL是一致的)如下:
SELECT
FROM
TEST_JOIN_1 A
JOIN TEST_JOIN_2 B ON AID = BID
;
3 Merge Rows (diff)
a>从两个数据源获取数据
b>以一个数据源为参考(Reference)数据源,以另外外一个为合并(Compare)数据源
c>以关键字段的顺序,逐行从 Reference 和 Compare 取数据,并合并到一起,并添加标记变化(identical, delete, new)字段
d>注意:identical情况下,Compare 的非关键字段出现在结果集里
类似SQL如下(只是类似,一般情况下不是下面的结果,因为 Kettle 是按排序后的关键字逐行处理的):
SELECT
AID ID
,ANAME NAME
,‘deleted‘ FALGFIELD
FROM
TEST_JOIN_1 A
LEFT JOIN TEST_JOIN_2 B ON AID = BID
WHERE
BID IS NULL
UNION
SELECT
BID ID
,BNAME NAME
,‘identical‘ FALGFIELD
FROM
TEST_JOIN_1 A
JOIN TEST_JOIN_2 B ON AID = BID
UNION
SELECT
BID ID
,BNAME NAME
,‘new‘ FALGFIELD
FROM
TEST_JOIN_1 A
RIGHT JOIN TEST_JOIN_2 B ON AID = BID
WHERE
AID IS NULL
;
4 Multiway Merge Join
a>从多个数据源获取数据
b>并关联(包括:内、外关联)字段相等的记录。
类似SQL(Kettle执行结果与SQL是一致的)如下:
SELECT
FROM
TEST_JOIN_1 A
JOIN TEST_JOIN_2 B ON AID = BID
JOIN TEST_JOIN_3 C ON AID = CID
;
5 Sorted Merge
a>从多个数据源获取数据
b>根据关键字顺序分别从两个流里抽取数据
c>最终把两个流里的数据以关键字为顺序合并到一起
类似SQL(Kettle执行结果与SQL是一致的)如下:
SELECT ID, NAME FROM TEST_JOIN_1
UNION ALL
SELECT ID, NAME FROM TEST_JOIN_2
UNION ALL
SELECT ID, NAME FROM TEST_JOIN_3
ORDER BY ID
;
6 Append streams
a>从两个数据源获取数据
b>取出第一个流里的所有数据
c>把第二个流里的数据追加到第一个流后面
类似SQL(Kettle执行结果与SQL是一致的)如下:
SELECT ID, NAME FROM TEST_JOIN_1
UNION ALL
SELECT ID, NAME FROM TEST_JOIN_2
;
7 Prioritize streams
a>从多个数据源获取数据
b>根据指定的顺序依次追加到一个流里
类似SQL(Kettle执行结果与SQL是一致的)如下:
SELECT ID, NAME FROM TEST_JOIN_1
UNION ALL
SELECT ID, NAME FROM TEST_JOIN_2
UNION ALL
SELECT ID, NAME FROM TEST_JOIN_3
在PB开发过程中,由于数据库中使用了 ntext字段,出现以下提示错误,郁闷了很长时间找不到解决方案,后查阅大量资料,终于明白:PB报错: 不能用 DB-Library(如 ISQL)或 ODBC 37 或更早版本将 ntext 数据或仅使用 Unicode 排序规则的 Unicode 数据发送到客户端。————————————————由于sql server中,ntext和nvarchar字段是用unicode编码存储内容的,因此php通过mssql扩展读取带ntext和nvarchar类型字段的时候会抱错。 如果 title 字段类型为 nvarchar,content 字段类型为 ntext ,那么下面的sql语句会报错:select title,content from article 正确的写法是:select convert(varchar(255),title) as title, convert(text,content) as content from article 或者不使用ntext字段这个很受用,解决我的难题!
以上就是关于kettle java脚本怎么获取系统信息变量全部的内容,包括:kettle java脚本怎么获取系统信息变量、以连接为例 说明Kettle和SQL处理数据的区别、使用kettle获取数据库的字段时会报错,错误信息如下,求高手解答等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)