kettle 数据迁移 (转)
最近在公司搞一个项目重构迁移问题,旧项目一直在线上跑,重构的项目则还没上线。重构之后数据库表结构,字段,类型等都有变化,而且重构的数据库由oracl改为mysql。这样就设计到数据迁移问题,别人推荐下用了kettle。由于资料比较少,刚开始搞了半天没成功过一次。现在终于有点开窍了,记录下以备后用,同时给用到的同学一点帮助也好,现在还是刚用的第二天,所以写的太浅显,望莫耻笑。
1、数据类型转换
由于大多数的数据结构都差不多,所以大多转换就如下图所示:

如果有字段变化在在“字段选择”中做映射,如我原来库中字段为UUID,在新库中字段叫ID

由于新的mysql中所有日期类型都采用时间戳来存储,所以在数据转换的时候也要考虑。这里在查询数据的时候,也就是“表输入”时候进行数据转换,首先写了一个oracle的函数:
create or replace function oracle_to_unix(in_date IN DATE) return number is
begin
return( (in_date -TO_DATE('19700101','yyyymmdd'))*86400 - TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))*3600)*1000;
end oracle_to_unix;
然后在查询数据的时候调用此函数进行转换:
select oracle_to_unix(CREATE_DATE) as create_date from t_1
这样就完成了oracle date类型到时间戳的转换了。
2、增加ID
在老的系统上有需要表都没有ID,这样在迁移数据的时候就需要同时生成ID,这里采用的是kellten“增加序列”来自动生成ID,转换过程如下

在增加序列中“值的名称”填入“表输出”中表的ID字段名称,或者随便写一个,在“字段选择”中进行映射即可,这里我直接写的ID。

3、性能提升
在测试迁移过程中,一开始的数据速度竟然是20多条/s,真是让人抓狂,3000W的数据这要迁移到明年了。。。,网上搜索了下,修改如下链接参数可以提高效率:
useServerPrepStmts=false
rewriteBatchedStatements=true
useCompression=true

设置上试了下果然是鸟枪换炮啊,立马速度增加到2000条/S
暂时记录到此,后续有问题再更新。
http://www.cnblogs.com/lcxdever/p/4335358.html
kettle 数据迁移 (转)的更多相关文章
- kettle 数据迁移
最近在公司搞一个项目重构迁移问题,旧项目一直在线上跑,重构的项目则还没上线.重构之后数据库表结构,字段,类型等都有变化,而且重构的数据库由oracl改为mysql.这样就设计到数据迁移问题,别人推荐下 ...
- 利用Kettle进行SQLServer与Oracle之间的数据迁移实践
Kettle简介 Kettle(网地址为http://kettle.pentaho.org/)是一款国外开源的ETL工具,纯java编写,可以在Windows.Linux.Unix上运行,数据抽取高效 ...
- Kettle进行数据迁移(ETL)
由于开发新的系统,需要将之前一个老的C/S应用的数据按照新的数据设计导入到新库中.此过程可能涉及到表结构不一致.大数据量(千万级,甚至上亿)等情况,包括异构数据的抽取.清洗等等工作.部分复杂的工作需要 ...
- [转载] 使用Kettle进行数据迁移(ETL)
由于开发新的系统,需要将之前一个老的C/S应用的数据按照新的数据设计导入到新库中.此过程可能涉及到表结构不一致.大数据量(千万级,甚至上亿)等情况,包括异构数据的抽取.清洗等等工作.部分复杂的工作需要 ...
- 数据迁移实战:基于Kettle的Mysql到DB2的数据迁移
From:https://my.oschina.net/simpleton/blog/525675 一.什么是ETL ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数 ...
- Neo4j ETL工具快速上手:简化从关系数据库到图数据库的数据迁移
注:本文系从https://medium.com/neo4j/tap-into-hidden-connections-translating-your-relational-data-to-graph ...
- 【SQLServer】记一次数据迁移-标识重复的简单处理
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 今天在数据迁移的时候因为手贱遇到一个坑爹问题,发来大家乐乐,也传授新手点经验 迁移惯用就 ...
- Entity Framework Code First Migrations--EF 的数据迁移
1. 为了演示方便,首先新建一个控制台项目,然后添加对entityframework的引用 使用nuget控制台执行: Install-Package EntityFramework 2.新建一个实体 ...
- mssql与mysql 数据迁移
概要: mssql向mysql迁移的实例,所要用到的工具bcp和load data local infile. 由于订单记录的数据是存放在mssql服务器上的,而项目需求把数据迁移到mysql ser ...
随机推荐
- 介绍一款开源的类Excel电子表格软件
Excel一直以霸主的地位,占领了Windows桌面表格软件市场No 1,与此同一时候,Office套装产品差点儿成为了IT行业的标配办公技能.有无相似Excel的桌面程序,绿色版,实现主要的数 ...
- 【Maven】Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0
1.到 http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html 下载你所需要的oraclejar包 2.在 ...
- CentOS安装rar及用法
1.下载安装rar wget http://www.rarsoft.com/rar/rarlinux-x64-5.4.b3.tar.gztar -zxvf rarlinux-x64-.tar.gz - ...
- Activity跳转
本例中MainActivity为:FirstActivity.java FirstActivity如下: package com.wyl.intentmultiactivitytest; import ...
- Python 操作Redis
redis对比monoDB: redis和memcache 是key value非关系型数据库,mysql是关系型数据库,表的结构和保存的内容有严格的要求,关系型数据库无法保存临时数据或不标准的数据, ...
- 今天才知道mysql
insert MySQL中的INSERT语句和标准的INSERT不太一样,在标准的SQL语句中,一次插入一条记录的INSERT语句只有一种形式.INSERT INTO tablename(列名…) V ...
- Executor框架
Executor框架是指java5中引入的一系列并发库中与executor相关的功能类,包括Executor.Executors.ExecutorService.CompletionService. ...
- IE6多出一只猪的经典bug
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- [置顶] 深入ResourceBundle
ResourceBundle是java开发中非常实用的一个类,主要用来处理应用程序多语言这样的国际化问题. 如果你的应用程序如果有国际化的需求,可以考虑使用ResourceBundle, 你要做的就是 ...
- 第五章:输入输出(IO)管理
I/O设备概念: 指计算机内部除中央处理器和内存之外的全部设备,通常也称为外部设备. I/O设备分类: ·按交互对象分类: ·人机交互设备 ·与计算机或其它电子设备交互的设备 ·计算机间的同信 ...