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

本文介绍了一种将非标准格式文件(如bat、txt等)导入Oracle数据库的方法,并详细阐述了使用SQL*Loader工具和CTL文件配置的具体步骤,以及如何通过创建临时表并最终将数据迁移至数据仓库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对一些数据,我们不能直接从数据库抽取到数据仓库,而是以另一种形式存在,如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工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值