开发者社区> 雨客> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

kettle进行数据迁移遇到的问题

简介:
+关注继续查看

使用kettle进行oracle或db2数据导入到mysql或postgres数据库过程中遇到以下问题,以下只是一个简单描述,详细的说明以及所做的代码修改没有提及。下面所提到的最新的pdi程序是我修改kettle源码并编译之后的版本。

同时运行两个pdi程序,例如:一个为oracle到mysql,另一个为oracle到postgres,其中一个停止运行

  • 原因:从oracle迁移到mysql创建的作业和转换文件和oracle到postgres的作业和转换保存到一个路径,导致同名称的转换相互之间被覆盖,故在运行时候会出现混乱。
  • 解决办法:将新建的作业和转换分别保存在两个不同的路径,最好是新建两个不同路径的仓库,关于如何新建仓库,请参考《kettle使用说明》文档。

关键字的问题。

Oracle初始化到mysql,关键字前面会加上前缀“MY_”。如果在建表的时候出现错误,则需要检查表的字段中是否有关键字。

  • 解决办法:出差的表单独进行处理,新建一个转换,实现关键字段该名称然后初始化出错的表。具体操作参见文档。

oracle中的字段名从中可以有#号,但是到mysql会报错

  • 解决办法:字段改名称,去掉#号

Db2初始化到mysql或是postgres出错

  • 原因:1)db2数据库连接用户没有权限访问出错的表;2)出错的表名存在小写字母
  • 解决办法:使用更新后的pdi程序,更新后的程序会将db2的表名使用双引号括起来。

Oracle到mysql和pg时日期类型数据值有偏差

  • 原因:从oracle中读取日期类型的数据时候,读取结果与oracle数据库中的数据已经存在偏差。少数记录使用oracle10g的驱动读取数据少一个小时,用oracle11g的驱动会多一个小时,该问题尚待oracle工程师给出解决方案。

主键从ORACLE导入不到MYSQL和POSTGRES

  • 原因:pdi程序中没有对主键进行处理
  • 解决办法:使用更新的pdi程序,执行Tools####Wizzard####Copy Tables Extension…功能添加主键;执行Tools####Wizzard####Copy Tables Data Only…功能可以只复制数据

Oracle中存在ascii字符导入到postgres时候报错:ERROR: invalid byte sequence for encoding “UTF8”: 0x00

  • 原因:PostgreSQL内部采用C语言风格的字符串(以0x00)表示结尾,因而不允许字符串中包括0x00,建议在转换时先对字符串类型的数据进行清洗,也就是增加一个节点用于删除字符串数据中的特殊字符0x00。
  • 解决办法:使用新的pdi程序。在kettle的DataBase类中修改PreparedStatement.setString(int index,String value)方法传入的参数,将value的值trim之后在setString

异构数据库之间的类型兼容问题。日期类型和时间类型的数据初始化到mysql或postgres中都为时间类型的数据,导致数据对比时候数据不一致。

  • 原因:Pdi程序中的类型转换采用的是向上兼容的方式,故日期和时间类型都转换为时间类型数据。
  • 解决办法:针对与db2数据初始化到mysql和postgres,该问题在最新的pdi程序中已经处理。因为oracle中的日期类型字段既可以存日期又可以存时间,故没针对oracle数据做出处理。

Db2中没有主键的数据初始化到mysql和postgres需要添加索引

  • 解决办法:使用最新的pdi程序,最新的pdi程序会添加主键和索引。

Db2中decimal(n,m)类型的数据初始化到postgres数据库被四舍五入。

  • 原因:Db2中decimal(n,m)类型的数据初始化到postgres中的类型不对。
  • 解决办法:使用最新的pdi程序。

导数据中途时没有报错,直接软件退出

  • 原因:1)jvm内存溢出,需要修改jvm参数;2)pdi程序报swt错误
  • 解决办法:修改jvm参数

初次使用kettle做db2的初始化会报错

  • 原因:kettle中的db2的jdbc驱动与使用的db2版本不对应。
  • 解决办法:从db2的安装目录下拷贝jdbc驱动到kettle目录(libext/JDBC)下

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
搭建es集群遇到的问题
搭建es集群,过程中会遇到一些情况,下边一一列举
55 0
数据并发的问题
一个数据库可能拥有多个访问客户端,这些客户端都可以并发方式访问数据库。数据库中的相同数据可能同时被多个事务访问,如果没有采取必要的隔离措施,就会导致各种并发问题,破坏数据的完整性。
1006 0
kettle与各数据库建立链接的链接字符串
kettle与各数据库建立链接的链接字符串 Sybase: TO_DB_URL = jdbc:sybase:Tds:192.168.168.163:5000/testdb?charset=eucgb&jconnect_version=6 TO_DB_DRIVER = com.sybase.jdbc3.jdbc.SybDataSource #com.sybase.jdbc3.jdbc.SybDriver驱动下表输入组件不支持别名。
987 0
数据迁移工具简单分析
exp/imp 对于数据结构的复制和同步,还是比较理想的工具。 在数据量比较小的情况下,这个工具的性能要远远好于datapump,而且重点推荐,他对于各种常用数据类型的支持还是很不错的。
785 0
+关注
雨客
微博@JavaChen,这里的所有博客文章来自http://blog.javachen.com/。
203
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载