用Kettle的一套流程完成对整个数据库迁移

上传人:cl****1 文档编号:496809362 上传时间:2023-05-17 格式:DOCX 页数:6 大小:193.22KB
返回 下载 相关 举报
用Kettle的一套流程完成对整个数据库迁移_第1页
第1页 / 共6页
用Kettle的一套流程完成对整个数据库迁移_第2页
第2页 / 共6页
用Kettle的一套流程完成对整个数据库迁移_第3页
第3页 / 共6页
用Kettle的一套流程完成对整个数据库迁移_第4页
第4页 / 共6页
用Kettle的一套流程完成对整个数据库迁移_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《用Kettle的一套流程完成对整个数据库迁移》由会员分享,可在线阅读,更多相关《用Kettle的一套流程完成对整个数据库迁移(6页珍藏版)》请在金锄头文库上搜索。

1、用Kettle的一套流程完成对整个数据库迁移需求:1. 你是否遇到了需要将mysql数据库中的所有表与数据迁移到Oracle。2. 你是否还在使用kettle重复的画着:表输入-表输出、创建表,而烦恼。下面为你实现了一套通用的数据库迁移流程。技术引导:实现之初,在kettle提供的例子中找到了一个类似的(samplesjobsprocess all tables)。通过相关改造,终于达到目标。实现过程解剖:整套流程分为:2个job,4个trans。使用到的Trans插件:表输入、字段选择、复制记录到结果、从结果获取记录、设置变量、 自定义java脚本、表输出。1.大 job。STAET表名称获

2、取流程表数据抽取作业Success2.要迁移的源库表名称获取,并设置到结果集,为下面的job使用。3. 配置子job为前面的每一条记录(即每个表)执行一次该子job4.下面是子job。5.获取记录中的表名称,并设置为到变量。6.读取当前表的结果信息,并在目标库中创建表(这个是难点)。表输人创建入库表结构因为只需要获取抓取要抽取表的结构信息,故在sql后面加上where 1=2。下面代码是创建目标库表。Java代码两1.2.3.4.5.6.7.public boolean processRow(StepMetaInterface smi, StepDatalnterface sdi) thro

3、ws KettleException / First, get a row from the default input hop/Object r = getRow();org.pentaho.di.core.database.DatabaseMeta dbmeta = null;8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.java.util.List list = getTrans().getRe

4、pository().readDatabases();/3.x 中 获取资源库的所有数据库连接信息用getDatabases();if(list != null & !list.isEmpty()for(int i=0;i0)String sql = db.getDDL(tablename, data.inputRowMeta);/$TAB LENAMEdb.execStatement(sql.replace(;, );logBasic(sql);catch(Exception e)logError(创建表出现异常,e);49.finally50.db.disconnect();51.52.5

5、3.return false;54. 7.表数据迁移。步骤名称数据库连接目标稹式目标表表输出|ny5qL_tEmtjJ蹒|螭. |1等浏览祖|HTAELE1TAME夺浏览匝|iooo提交记录数星裁野表忽略插入绪误Mai it opt i on.5 DataTiaze 1 elds lFinills to insert;Tablfi fi eld.巨川Ti f i 1 iEnt er i e_d m:ipjiin氏由于字段是动态的,刮不需要设置 与来源字段名称一样即定匚只有保证入库表字段确定回取消隹)8.差不多就行了,本人使用mysql到mysql、oracle的测试是没有问题的不过在测试过程中, 发现源表若存在有blob的表,会有问题,可能是由于表输出没有指定字段的原因,具体解 决办法,也没有去多想,以后有时间在完善把。上面的整套流程的是在kettle4.3下完成的,附件里面可下载完整流程。5.x运行到创建表结构步骤报错,原因data.inputRowMeta为空,因为在第6步在sql后面加上where 1=2,导致表输入步骤没有抽取到记录,5.x里结构也变成了 null。 解决:把where 1=2去掉,然后,在表输入的限制行设置为1,即可,本人亲测。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号