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('','yyyymmdd'))* - TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),,))*)*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
暂时记录到此,后续有问题再更新。
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 ...
随机推荐
- asp.net webapi中helppage
今天研究了下webapi,发现还有自动生成接口说明文档提供测试的功能 参考:https://docs.microsoft.com/en-us/aspnet/web-api/overview/getti ...
- [Oracle运维工程师手记] 如何从trace 文件,判断是否执行了并行
[Oracle运维工程师手记系列]如何从trace 文件,判断是否执行了并行 客户说,明明指定了并行的hint,OEM 却报说没有并行,并且提供了画面. 客户的SQL文长这样: INSERT/*+ p ...
- golang lua使用示例
package main import ( "fmt" "github.com/yuin/gopher-lua" ) func hello(L *lua.LSt ...
- 新Chrome浏览器不支持html5的问题
window.applicationCache事件,最新chrome浏览器已经不能判断是否支持html5: 之前,在IE和Google中 为ApplicationCache对象,而在FF中为 Offl ...
- 软件工程(FZU2015) 赛季得分榜,第四回合
SE_FZU目录:1 2 3 4 5 6 7 8 9 10 11 12 13 积分规则 积分制: 作业为10分制,练习为3分制:alpha30分: 团队项目分=团队得分+个人贡献分 个人贡献分: 个人 ...
- redis从入门到高可用 Redis复制的原理与优化
需要的联系我,QQ:1844912514
- Maven将远程包拉去到项目指定路径
<build> <plugins> <plugin> <artifactId>maven-dependency-plugin</artifactI ...
- Python——迭代器
一.概述 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 二.可迭代的对象 序列:字符串.列表.元组 非序列:字典.文件 三 ...
- mongoDB 文档操作_改
mongoDB 更改操作 格式对比 MySQL update table set .... where .... db.collection.updateOne(query,update,upsert ...
- 测试常用Linux命令
大家应该经常在网络上看到下图吧,虽然我们不会去执行下面图片中的命令,但是linux常用的命令对于测试人员来说,还是必须掌握的,不管是做功能测试还是性能测试,最常用的就是看日志了. sudo是linux ...