
下载pdi-ce-440-stablezip,解压到文件夹,打开data-integration中的Spoonbat
2
出现欢迎界面后来到Repository Connection窗口,选择建立一个新的repository,随后出现“资源库信息”窗口:
3
在“资源库信息”窗口中选择新建一个数据库连接,d出“Database Connection”窗口:
4
在其中输入Connection Name, Host Name, Database Name, Port Number, User Name,Password信息即可建立连接,完成之后在Repository Connection窗口以admin用户名登陆。
5
新建一个名为cscgTransTest的Transformation,从“核心对象”中将两个“表输入”和一个“插入/更新”拖入到cscgTransTest中,并建立它们之间的连接,如下图所示:
6
在cscgTransTest中建立一个新的数据库连接ttt,通过表输入“max_createtime”从目标数据库ttt中获取某个表中最新数据的建立时间:
SELECT max(trunc(createtime)) FROMumdatatoeventmedia
7
在cscgTransTest中建立一个新的数据库连接testdb,以表输入“max_createtime”的查询结果替代表输入“umdatatoeventmedia”中的变量,执行SQL语句从数据库testdb中获取需要插入或者更新到ttt数据库的数据
SELECT FROMumdatatoeventmedia where trunc(createtime) >= trunc()
8
在“插入/更新”中选择“数据库连接”、“目标模式”、“目标表”等信息,“用来查询的关键字”中的字段用来查询某条记录是否在目标表中存在,不存在则插入记录;如果存在,则继续比较其他字段是否与流里的字段值相同,如果相同则不执行任何 *** 作,如果不同则更新“更新字段”中所列字段。
“用来查询的关键字”所列字段是该表的primarykey,从而可以唯一标识一条记录。
9
分别为每一个表建立一个如上模式的转换步骤。
10
新建一个名为“cscgJobTest”的Job,在核心对象中将“START”和“Transformation”拖入cscgJobTest中,并建立两者之间的连接。
11
选中START中的“重复执行”,类型为“不需要定时”;在Transformation中将转换名设置为之前建立的“cscgTransTest”
12
点击“Run this Job”运行。Job和Transformation的执行结果如如下:
Kettle是一款国外开源的etl工具,纯java编写,绿色无需安装,主要用于数据抽娶转换、装载。kettle兼容了市面上几十种数据库,故用kettle来做数据库的迁移视乎是个不错的选择。 kettle的数据抽取主要在于抽取数据,而没有考虑数据库的函数
用转换来获取。
Trim type,用来去除字符串的首尾空白字符(如space,tab),这里可以选择去除字符串头部空白字符(left),字符串尾部空白字符(right),头尾都去除空白字符(both),核心对象->转换->字符串 *** 作,将其拖拽到转换页面中。
系统环境变量的影响范围很广,凡是在一个 JVM下运行的线程都受其影响
Kettle 变量限制了变量的作用范围, 变量范围包括三种分别是 grand-parent job, parent job, root job
内部变量: 是 kettle 内置的一些变量, 主要是kettle 运行时依赖的环境, 如转换文件名称, 转换路径,ip地址, kettle 版本号等等
"Kettle 变量" 只能通过设置环境变量 (Set Variable) 步骤设置,同时设置变量的作用范围
"内部变量" 是预置的无须设置
命令行参数:
图形界面下,每次运行时有要求输入参数的提示窗口
假设“名称”那个单元格是A1(拜托下次截图连标尺一起截,不然大家都很累)则结果从D列开始首先D列的内容需要手工输入(或者可以用筛选功能的“选择不重复项”选出来)E2公式:=IF(COLUMN(A:A)>COUNTIF($A:$A,$D2),"",INDEX($B:$B,MATCH($D2,$A:$A,0)+COLUMN(A:A)-1))向右拉,再向下填充即可
在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字段这个很受用,解决我的难题!
Set Variables: This step allows you to set variables in a job or in the virtual machine It accepts one (and only one) row of data to set the value of a variable
IMPORTANT : IT IS NOT POSSIBLE TO SET AND USE A VARIABLE IN THE SAME TRANSFORMATION This is because all steps run in parallel
在一个转换里设置的变量,不能在这个转换里使用: 是因为一个转换中的所有步骤都是并行运行的,kettle的理念里变量是用来在Job级别通信用的,在Job的一步里set了一个变量后, 在job后面的步骤里可以用${variable}来调用这个变量。
但在transformation里可以直接用上一步的返回结果集(stream) ,作为下一步的输入参数 :即不用通过定义和调用变量而进行参数传递,设置方法如下:
以上就是关于kettle中怎么把开始数据库导出的数据和目标全部的内容,包括:kettle中怎么把开始数据库导出的数据和目标、kettle 怎么获取 生成的主键值、在kettle中如何获取字符串个数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)