![](https://img-blog.csdnimg.cn/20191217235726456.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Oracle_ETL
文章平均质量分 87
ETL相关
黄炎龙
这个作者很懒,什么都没留下…
展开
-
Kettle_抽取数据举例
实验项目:使用kettle完成scott用户下的emp表数据抽取到hyl用户下emptest表 实验环境操作系统:WIN7数据库:Oracle11G R2 64 bitKETTLE版本:version 3.2.2 开始实验:1. 查询scott用户下emp表的数据2. hyl用户下创建实验表(emptest)3. 查询hyl用户下实验表(emptes原创 2014-12-30 12:51:21 · 12110 阅读 · 0 评论 -
数据清洗小记(9):分类进行字符串转日期(某日期字段存在多类格式处理)
原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则有权追究版权法律责任。深蓝的blog: 【背景】在清洗数据时,发现源端系统某时间类字段下的数据存在三类格式,怀疑这是源端接受自三个或更多系统的来源数据格式不统一造成的。之所以出现这种情况,因为源端该时间类字段竟然用的varchar2格式,可能源端系统在接受不同系统上传数据时没做规范造成的。需要把该字段下的原创 2015-06-16 08:56:30 · 1821 阅读 · 0 评论 -
数据清洗小记(8):字符串转日期:时间戳引来的问题
原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则有权追究版权法律责任。深蓝的blog: 【背景】 在进行数据抽取时,源端“时间意义”字段数据为“时间戳格式”,而且字段类型为字符串类型。但是目标端要求,进入数据为date类型,需要清洗。 【解决】 遇到这种问题,起初可能会比较棘手,但通过对“时间戳格式”进行简单分析后,原创 2015-06-16 08:43:58 · 1990 阅读 · 0 评论 -
数据清洗小记(11):Kettle_利用设置变量实现数据增量(小例)
【背景】 利用kettle工具,完成某表的增量工作。 【解决】 利用模块完成即可,如下简图: 【实验】 先手工准备一个实验环境: 准备基本完成如下效果: select t.*, t.rowid from EMP_ETL t select max(hiredate) maxsj from EMP_ETL 我们验证将2015年10月22日的数据插入目标表中。 创建目标表:原创 2015-10-22 01:46:50 · 5851 阅读 · 0 评论 -
数据清洗小记(4):多用户调用同一个函数
原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则有权追究版权法律责任。深蓝的blog: 【背景】 做数据抽取时,源端遇到多用户访问不同所属表情况,需要使用相同的函数时,在多用户下需要重新创建。 【解决】 多用户下遇到使用相同函数的情况时,我们可以选择重新创建函数,但有时由于函数过多,执行起来不方便,每个用户都执行原创 2015-06-03 09:09:18 · 1555 阅读 · 0 评论 -
数据清洗小记(5):主键类ID字段的生成
【背景】在由源端抽取数据插入目标端后,需要创建一个主键ID字段。 【解决】方法一、使用sys_guid()函数生成32位的随记数例如向emp表中,新建一个字段,并且设置字段默认值为用sys_guid()函数自动生成一个32位不重复的随机数。altertable EMPaddIDvarchar2(32)default sys_guid(); 方法二、使用触发器原创 2015-06-03 14:03:59 · 1538 阅读 · 0 评论 -
数据清洗小记(2):全角数字转换半角数字
【背景】在将某数字类型字段插入到目标端时,报错,提示类型不正确,查看数据发现确实为number,但发现为“全角”数字。 【解决】利用函数,将“全角”转换成“半角”,使用如:to_single_byte()函数,对其转换,转换成半角后,成功存入数据库。另外,如果遇到需要“半角”转换成“全角”的场合时,可以使用to_multi_byte()函数。 【实验】小知识原创 2015-06-03 08:56:04 · 2849 阅读 · 0 评论 -
数据清洗小记(12):姓与名的提取
【背景】 由源端抽取数据时,姓名中文为唯一字段,落地到目标端时,由于业务需要,需要有单独的姓氏字段和姓名字段,则需要利用长度判读函数、截取函数处理。【解决】 1、长度判读利用case、length函数; 2、截取函数利用substr函数。【实验】 1、构造源端实验表create table yuduan (english_name varchar2(100),chinese_name原创 2015-12-28 16:02:33 · 2088 阅读 · 0 评论 -
数据清洗小记(13):CASE WHEN写条件时字段位置的注意
【背景】 业务库需要根据某“编号类”字段数据情况,在业务表中根据“编号类”字段是否为空,生成一个标识类数据字段。使用到了case when函数,但在使用的过程中,却忽视了这个作为条件并且用于判断的字段,在case when函数中所出现的位置。【解决】 使用case when函数 语法:SELECT <Column> CASE WHEN <A> THEN <RESULT_A>原创 2015-12-28 16:09:49 · 3286 阅读 · 0 评论 -
数据清洗小记(14):rtrim不被注意的用法
【背景】 在业务对逻辑下,需要对某字段数据进行处理,要求把右侧开始数起,从首位开始,为连续0的数据中0给去掉。我们习惯了使用rtrim函数来处理右侧开始的空格位,却忽视了该函数其实可以达到去除特定数字或字符的目的。【解决】 使用rtrim函数,去除右侧开始,从首位开始连续的某数字或字符。【实验】 1、举例:使用rtrim函数去除右侧首位开始的连续空格SELECT RTRIM('232388原创 2015-12-28 16:14:36 · 1910 阅读 · 0 评论 -
数据清洗小记(10):清洗字典数据把“A1B1C1”翻译成对应中文字段
原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任。 深蓝的blog【背景】 某部委项目,获取到某采集端某类数据,需配合开发完成数据的抽取、清洗工作。其中有一类字典类字段,由于采集端数据问题,对于字典类的数据内容出现大量问题数据需要清洗,把字典值翻译成中文名称提供给开发使用,举个例子如下: 假设字典列表如下: 遇到问题1:如何原创 2015-10-22 00:58:28 · 2912 阅读 · 0 评论 -
数据清洗小记(1):正确英文日期转换报“无效的月份”
原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则有权追究版权法律责任。深蓝的blog: 【背景】 数据中出现“9-Jun-14”格式数据,在将其存入日期格式字段时,需要进行转换,但是一个标准的日期出现了报“无效月份”的报错。 【解决】 经过检查后,发现了问题不是出在日期上,而是出在系统的语言上,在操作系统中无法原创 2015-06-03 08:51:22 · 2164 阅读 · 0 评论 -
数据清洗小记(3):判断是否为数字函数
【背景】在处理数据时,在向为number类型的字段插入数据的时候,出现大量中文或无意义英文,查看发现均为垃圾数据,需要清洗。 【解决】计划调用数字判断函数来完成判断,如果判断为数字类型的,存入数据,如果为非数字类型的,赋空值处理。编写“判断是否为number”函数,如下:createorreplacefunction isnum(v_in varchar2)retu原创 2015-06-03 09:01:57 · 1528 阅读 · 0 评论 -
kettle连接集群环境配置
原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明以下出处,否则追究版权法律责任。深蓝的blog: 在Kettle的根目录下找到jdbc.properties文件(参考目录:D:\soft\Kettle\data-integration\simple-jndi),在配置文件中添加一个连接RAClink(JNDI连接名称)。 RAClink/type=原创 2015-02-10 17:03:33 · 7673 阅读 · 0 评论 -
KETTLE_内存溢出错误
原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明以下出处,否则追究版权法律责任。深蓝的blog: kettle内存溢出错误解决环境:源端数据库:oracle 10G R2目标端数据库:oracle 11G R2kettle版本:5.0.1-stable报错:抽取大数据量表时,报错,日志信息如下:2015/01/05 11:27:42 -原创 2015-01-06 08:57:31 · 38128 阅读 · 8 评论 -
kettle_删除“共享输出表”引发的错误
原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任。深蓝的blog: kettle报错:Unexpected problem reading shared objects from XML file:null 故障重演:在测试环境下,将表输出进行了共享,然后删除了共享,这一些列操作后,错误发生了,在保存新的转换时,报错如下图:原创 2015-04-01 08:48:04 · 7669 阅读 · 1 评论 -
Kettle_使用资源库功能把ktr元数据统一存储到数据库中
原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任。深蓝的blog: 【目标】利用kettle中的资源库功能,把ktr文件统一存储到数据库中,方便本地进行版本管理ktr:使用kettle编辑的转换,被称为ktr;转换:添加功能模块,实现ETL的项目称为转换。 一路确定后,点击ok完成资源库的原创 2015-05-28 09:15:46 · 11651 阅读 · 0 评论 -
抽取、清洗varchar2到number类型数据的方法(由繁到简)
原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任。深蓝的blog: 【背景】进行数据抽取时,抽取“联系电话”字段时,发现存在部分中文、英文,需要对该字段进行清理。 【垃圾数据存在原因】如果有“联系电话”这样的字段,在设计之初就设置为number,而不是设置成varchar2,再在前端软件做一个约束,相信就不会有这样存在英文或原创 2015-05-28 08:52:54 · 2535 阅读 · 0 评论 -
去重80W重复数据时夯死临时处理
原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任。深蓝的blog: 去重80w数据时夯死临时处理 近日,在对一张百万数据的业务表进行去重时,去重操作竟然夯住了。下面就来简单回忆一下。1、查询业务表数据量,查看到总共有200多w条SQL> select count(*) from tb_bj_banker_etl原创 2015-05-27 08:44:45 · 2654 阅读 · 1 评论 -
kettle_为子服务器创建carte服务
原创作品,出自 “深蓝的blog” 博客,深蓝的blog: 把kettle中carte创建成windows服务项提示:Carte的作用是用于远程web监控kettle抽取状态的子服务器。官网下载:把解压的文件拷贝到kettle的安装目录我们可以执行bat下的命令程序,完成服务的创建。 先使用console进行模拟查看:模拟成功以后,执行i原创 2015-07-14 13:49:24 · 5864 阅读 · 1 评论 -
如何利用kettle官方社区查找关于carte服务的设置
原创作品,出自 “深蓝的blog” 博客,转载时请务必注明出处,否则有权追究版权法律责任。深蓝的blog: 利用Kettle社区查找资料:举例:查找关于carte服务的配置搜索kettle,进入kettle社区,如下:进入社区网站后,找到kettle的document选项,点击,如下:下拉到最低端,查找你要搜索的关键项,点击进入即可,如下:接下来就是相信原创 2015-07-13 15:37:11 · 5599 阅读 · 1 评论 -
数据清洗小记(7):判断是否为日期函数
原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则有权追究版权法律责任。深蓝的blog: 【背景】在对某日期数据进行抽取时,发现其中存在大量非日期数据,需要清洗垃圾数据(非日期数据)。 【解决】编写一个简单的判断是否为日期的函数,对数据为“日期”的抽取并赋予日期,对于“非日期”的数据,赋空处理。参考如下:/**************原创 2015-06-15 20:40:41 · 1238 阅读 · 0 评论 -
数据清洗小记(15):DECODE利用sign函数做大小值判断
【背景】 对某业务数据处理时,需要判断两个数据字段的大小,保留较大的数据存入到指定字段下面。考虑使用decode函数和sign函数来实现这个目的。【解决】1、decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)2、sign()函数:根据某个值是0、正数、负数,分别返回0、1、-13、为获得两个字段的较大值或较小值:A>B, A-B>0, sign(A-B)=1,原创 2015-12-28 16:26:48 · 7039 阅读 · 2 评论