最近建立数据仓库的过程中遇到了若干问题,现总结如下。
1 mysql到oracle的迁移。这是个复杂的问题,因为我们没有计划投资购买datastage这样牛逼的ETL工具,因此最开始我决定自己写代码,将mysql的数据导入文本中,再利用sqlldr将数据导入到oracle中。这个过程说起来并不是很复杂,但是实际操作起来比较烦,因为我遇到了如下的问题:
1.1 NULL值。mysql导出文件的时候null值会被处理为“\N”,这样在入库的时候oracle会直接将它当做一个字符来处理,因此就出现了这样的困扰,我也许还需要在数据导入成功以后进行一次update操作,四五万条数据我也就认了,可是动辄百万千万的数据,我是没有这个耐心的。于是我选择了在SQL中进行修改,写了case when语句将null处理成了'',这样sqlldr入库的时候就会将它处理成null值了。
1.2 汉字。搞程序的人也许对汉字会又爱又恨,因为我们程序员英语好的不多,大部分人很讨厌读英文文档,一方面又要面对汉字经常乱码的问题。在对mysql的导出数据进行入库的时候就出现了汉字乱码的问题,而且比较奇怪的是,在我直接在数据库服务器上用sqlplus进行查询的时候汉字显示正常,而在远程windows上用plsql dev查,汉字就是一堆乱码了。后来我在控制文件的第二行加了这样一句:“characterset UTF8”,解决了这个问题。希望大家遇到类似的问题能用我的这个方法解决掉。
1.3 换行。业务系统是面向用户的,不能要求用户进行很规范的输入,比如有的用户就喜欢在注册昵称里加很多特殊字符,而我被各种各样的换行符困扰了很久。回车换行是比较常见的换行符,在android这样的操作系统里,换行符属于linux形式,被导出来的时候,mysql并不会将换行符以某种形式导出,而是直接在文本中进行了换行,比如一个人的昵称是
“阳光小男生
我爱XXX”
那么在输出的时候就是这样的(表结构是id, nickname):
123, 阳光小男生
我爱XXX
这样子入库的时候sqlldr就识别不了了,只能按照第二行入库,但是id是number型的,入库的时候“我爱XXX”是会报错的。为了解决这个问题,只好再用case when对“\n”进行处理,处理成'',反正数据仓库并不需要将这些非主流的名字那么精确地入库。接下来还会遇到的就是windows的换行符了,对于这个问题,还是用case when处理,于是有些非主流的信息只能加了好几层case when进行处理。真是让我无力吐槽。
2 工具。对于工具其实ETL界最有名的莫过于datastage了,但是IBM的东西一向很贵,而且部署起来成本也是比较大的。所以互联网公司一般会转向开源软件,这个时候google告诉我有一款叫做kettle的软件很好用。
kettle主要包括了三个部分,spoon,kitchen和pan。都是厨房用具,连kettle都是水壶的意思,外国人有时候确实很有意思。其中spoon是图形化界面,可以用于新建转换和作业这些操作,kitchen用于调度作业,pan用于调度转换。因为kettle并不像DS那样,有服务端和客户端,在客户端建立的Job,服务端会定期调度,如果要kettle实现这一功能,就必须把spoon一直开着,而且把job置为运行状态,这样做很容易导致java heap报错。因此大家都推荐使用crontab定时调度kitchen。
一个多月以来我试验了上述的两种方法,第一种方法是我第一家企业,那个研究所喜欢使用的,但是我通过实际操作发现,自己写代码,维护的成本会很大,而且很容易出错,如果这个人走了,那么接手的人会很难受。而使用工具是业界比较流行的做法,其实用好一款工具,精通它,那么你在这个领域也能称为达人了,现在我才深刻的理解了那句“工欲善其事,必先利其器”。
Kettle的用法,我会慢慢总结。
相关推荐
根据给定的信息,我们可以从标题、描述以及部分内容中提炼出一系列与咖啡饮品业工作总结相关的知识点。下面将逐一展开这些知识点: ### 一、标题解析 #### "咖啡饮品业工作总结商务总结PPT模板" 1. **目标受众**:...
这份"商务简约工作总结模板"设计得恰到好处,旨在帮助用户清晰、直观地呈现最近的工作进展、完成的任务、取得的成功以及对未来的规划。以下是模板的详细解析: 1. **最新工作概述**: 这一部分是总结报告的开篇,...
本工作总结旨在梳理我们的工作流程、策略及成效,以为今后类似项目提供可借鉴的经验和模板。 首先,项目背景与目标的明确是任何项目成功的第一步。针对教军场村的搬迁项目,我们的目标是依法、公平、和谐地实施搬迁...
"2021最新班主任资料包-小学班主任工作总结9.rar" 这个标题揭示了几个关键信息。首先,这是2021年的一个资源集合,表明资料内容是基于最近一年的教育实践和经验总结。其次,关键词“班主任资料包”暗示这是一份针对...
【微立体工作总结新年计划PPT模板】是一种设计精美的PPT模版,适用于专业人士进行年度工作总结和新年工作计划的汇报。以下将详细解释这个模版的主要组成部分及其在实际应用中的重要性。 1. **年度工作概述**:这...
在"最新工作概述"部分,用户可以通过点击提供的文本框,输入关于最近工作阶段的总体描述,包括项目进展、团队动态、市场变化等关键信息。PowerPoint的内置功能如文字处理、大纲规划、绘图、图表制作和演示管理工具,...
在当今竞争激烈的就业市场中,撰写一份高质量的述职报告或工作总结是个人职业发展的关键一环。这些文档不仅是个人经历和技能的总结,也是个人与未来雇主沟通的桥梁,有助于个人在众多求职者中脱颖而出。为了提高求职...
以下是对一名小学语文教师在最近五年教学工作中总结的详细梳理,旨在为同行提供一份参考,为自我评估提供一个维度。 五年间,作为一名小学语文教师,我始终坚守“爱岗敬业”的基本原则。这不仅是对自己的职业要求,...
在2021年初一班级的安全工作总结中,班主任和班级成员共同努力,采取了一系列措施,确保了学生的人身安全和教学秩序的稳定。这份总结详细阐述了安全工作的各个方面,旨在强化安全意识,提升自我保护能力。 首先,班...
电力客户服务小组年度工作总结 在电力客户服务的工作中,精细化管理和提升服务质量是至关重要的。在过去的一年里,小组通过定期的会议和总结,不断发现并改进存在的问题,以提高用户满意度。以下是一些主要的工作...
在过去的一段时间里,分公司工会在上级工会的指导下,有效地完成了几项核心任务,包括年终与季度工作总结、评比活动以及员工文化建设和权益保障等。 首先,工作总结与评比活动是评价员工个人和团队整体表现的重要...
以下是对标题“zq_linux工作总结”中提及的一些关键工具和概念的详细解释: 1. **`top` 命令**: `top`是一个实时监控系统状态的命令,它提供了动态查看系统资源使用情况的界面。主要参数如: - `-d`:更新间隔...
在大学教育的殿堂里,老师的教学工作总结报告不仅是对自己教学实践的回顾,更是对未来教学方向的规划与展望。作为一名大学教师,站在知识的讲台上,我深感责任重大,肩负着培养学生专业知识与人格魅力的双重使命。在...
【文艺委员工作总结】 作为一名文艺委员,我在过去的时间里承担了许多责任,既有压力,也有收获。这份工作总结旨在回顾我作为文艺委的六个月经历,分享我在组织活动过程中所学到的经验和感悟。 在担任文艺委员期间...
【幼儿园疫情期间小班教学工作总结】 在新冠疫情的影响下,幼儿园的小班教学经历了前所未有的挑战。教师们遵循“特殊的时光,不一样的陪伴”的理念,以提升自身素质为目标,为孩子们提供了丰富的线上和线下教学活动...
文档标题和描述中提到的是2013年银行一季度的工作总结,主要涵盖了银行业务操作的规范性、信贷管理的完善、内部控制的关键点发现与整改,以及服务水平的提升。以下是这些内容涉及的知识点详解: 1. **会计基础工作...
【客服人员工作个人总结】 客服工作是企业与消费者之间沟通的重要桥梁,它要求工作人员具备高度的专业素养、良好的服务态度和持续的学习能力。以下是对客服人员工作个人总结的主要内容的详细阐述: 1. **立足本职...
### 述职报告工作总结的关键知识点 #### 一、真实性原则 - **重要性**: IBM公司中国区人力资源总监白文杰特别强调,无论是在简历的哪个部分,包括个人的知识水平、业务能力、工作经历等,都必须遵循真实的原则。 -...
本篇教学工作总结来源于一位小学四年级数学教师,其涵盖了整个学期的教学活动和方法的梳理与反思。以下是对文档内容的详细解读: 首先,教师明确了教学目标,并针对新课标进行深入研究,这意味着教师对教学大纲有...
在最近一年的辛勤工作与努力下,我们街道总工会取得了令人瞩目的成绩。现在,让我们一起回顾和总结过去一年的工作,以便为未来的发展奠定更加坚实的基础。 首先,我们始终坚持党的方针政策,密切联系群众,全面贯彻...