ETL对文件数据进行处理,进入到数据仓库

对一些数据,我们不能直接从数据库抽取到数据仓库,而是以另一种形式存在,如bat文件、txt文本等,那么对于这些文件数据该如何处理。
方法:(1)利用Oracle的SQL plus工具,对数据进行写入到原始的数据表(即再数据从仓库中建的表,用于存储文件的原始数据),然后再对原始的数据进行更新(U)、插入(I)、删除(D)操作即可
注:原始的数据文件中的字段必须要有数据记录的操作类型,即U、I、D标识

例子:
前提:
(1)建立源数据表以INC开头命名,用以存储原始的数据
(2)建立数据仓库的表以ODS命名,用以存储处理过后的数据
过程:
(1)将数据文件通过Oracle的sqlldr导到数据中的INC表中
(2)INC中的数据是没经过处理的,要经过转换成数据格式符合的格式,就需要通过转换,如日期、字符串的转换
(3)将INC的数据经过处理加载到目标的表ODS中

SQL plus导数据进入数据库的方法:
1、编写CTL文件
格式如下:

OPTIONS(errors=5000000,bindsize=33554432,readsize=33554432)----当数据文件过大,用于改变缓存,否则会报错
LOAD DATA 
CHARACTERSET UTF8   -----字符的格式
INFILE  "D:\INC\data\etl\test.dat" -----数据文件的位置
TRUNCATE INTO table_name ----目标表
Fields terminated by "" -----数据文件字符的分隔符
trailing nullcols 
( 
id char(4000),
name char(4000)
)

注:若需要将字段拼到一起,给一个新的字段,可以在CTL文件中直接写
如: ID_name char(4000) “:id||:name”
这里的冒号可以理解为变量的赋值,|| 依然是Oracle的拼接字符
2、利用Oracle的sqlldr命令将数据文件导入到INC表中

sqlldr userid=用户名/用户密码 control=D:\test\test.ctl log=D:\test\test.log bad=D:\test\test.bad

3、将INC表中的数据导进ODS中
可以用存储过程,也可以用kettle等ETL工具。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值