用kettle数据抽取的一次经历

数据抽取有好多种kettle作为开源版本还是很好用的。

下面就说说这个小项目的具体实施过程

1、先说这个小项目的由来 这个抽取的小项目其实自己没事找事来的,本公司和一个央企做环保项目,然后涉及到数据抽取这块,人家不给做了但是合同上也还真没明确说让乙方做。

怼了乙方一顿,怎么办自己找事自己做呗,乙方已经建好了需求的表SQLServer数据库,我们的业务数据库oracle,表的结构啊 内容啊 不完全一样但是都是业务数据中有的字段,需要拼凑

2、开干

首先整理业务从sqlserver上创建一个中间表把oracle业务库中的数据直接抽取过来直接增量

这其中要配置数据源,数据源就是连接的数据库的配置等这里就不介绍了。主要是数据字段问题,因为数据字段类型不同的数据库会不同如下:

默认的oracle NUMBER类型 和sqlserver numeric(38, 0) 是一样的如果sqlserver 不指定的话就会一直报错

以下是两种数据量类型的比较:

Oracle和sqlserver数据类型对应

SQL Server 数据类型Oracle 数据类型
bigintNUMBER(19,0)
binary(1-2000)RAW(1-2000)
binary(2001-8000)BLOB
bitNUMBER(1)
char(1-2000)CHAR(1-2000)
char(2001-4000)VARCHAR2(2001-4000)
char(4001-8000)CLOB
dateDATE
datetimeDATE
datetime2(0-7)TIMESTAMP(7)(对于 Oracle 9 和 Oracle 10);VARCHAR(27)(对于 Oracle 8)
datetimeoffset(0-7)TIMESTAMP(7) WITH TIME ZONE(对于 Oracle 9 和 Oracle 10);VARCHAR(34)(对于 Oracle 8)
decimal(1-38, 0-38)NUMBER(1-38, 0-38)
float(53)FLOAT
floatFLOAT
地理BLOB
geometryBLOB
hierarchyidBLOB
图像BLOB
intNUMBER(10,0)
moneyNUMBER(19,4)
nchar(1-1000)CHAR(1-1000)
nchar(1001-4000)NCLOB
ntextNCLOB
numeric(1-38, 0-38)NUMBER(1-38, 0-38)
nvarchar(1-1000)VARCHAR2(1-2000)
nvarchar(1001-4000)NCLOB
nvarchar(max)NCLOB
realreal
smalldatetimeDATE
intNUMBER(5,0)
smallmoneyNUMBER(10,4)
sql_variantN/A
sysnameVARCHAR2(128)
textCLOB
time(0-7)VARCHAR(16)
timestampRAW(8)
tinyintNUMBER(3,0)
uniqueidentifierCHAR(38)
varbinary(1-2000)RAW(1-2000)
varbinary(2001-8000)BLOB
varchar(1-4000)VARCHAR2(1-4000)
varchar(4001-8000)CLOB
varbinary(max)BLOB
varchar(max)CLOB
xmlNCLOB

这就实现了从oracle到sqlserver的提取

然后下一步就是sql内部提取

3、kettle的流程如下:

这里其实比上一个更简单就是涉及到两个点一个是时间转字符串和转float类型

时间转字符串如下:Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47

转float如下图:

这样就做好了两个提取的转换

转换做完了把这两个ktr文件放到服务器上并且data-integration也要放到服务器上并能够运行,我把jdk也和data-integration放到了一起就不用安装jdk了

修改Spoon中的配置修改好了以后就可以拷贝到哪都能用了就是有点小大

这样就可以做完了

4、但是不能总用手点击啊可以用data-integration中自带的job来实现多长时间采集一次但是要开着spoon软件,如果谁误关了 就不执行了,想了想还是用windos自带的定时任务吧。

首先制作bat文件如下方法:

制作完成后点击bat文件测试下是否能够执行,如果能执行则下一步,不能则查找原因。

5、制作windows执行计划

我的电脑-右键-管理

 

到此任务创建完成 就等着执行吧!!!!!!!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早起晚睡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值