- 123
- 0
- 约 7页
- 2017-04-29 发布于河南
- 举报
kettle 使用中的一些常见问题
kettle 使用中的一些常见问题
问题1:从excel 中抽取数据,插入到oracle 9 数据库中,报下面的错误.2008/06/25 13:30:57 - 插入更新数据表.0 - Insert row: ![field1=1.3965E8, field2=1,798, field3=2002/05/27 00:00:00.000]2008/06/25 13:30:57 - oracl - ERROR : java.sql.SQLException: ORA-01722: 无效数字2008/06/25 13:30:57 - oracl - ERROR : at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
原因:从错误信息可以看出,字段 field2 对应的数据是 1,798,该字段在数据库中是 Number 类型,Oracle 不能将 1,798 格式的字符串转换为数字。解决方法:在 【Excel输入步骤】-【字段】 标签下对应的字段设置为正确的类型。将 field2 设置为 Number 类型(默认是 String 类型)。
问题2: 由 sqlserver 向 mysql 迁移数据, 迁移以后的数据是乱码原因: 这是由于mysql 的默认编码是 utf-8, 而中文环境下客户端的默认编码一般都是 gbk 或 gb18030, 由于客户端和服务器编码不一样导致保存到 mysql 的数据是乱码解决方法: 在新建连接窗口中有一个选项(option) 标签, 在这个标签下可以设置数据库的一些连接参数. 在这里我们要设置 mysql 的客户端编码参数, 参数名characterEncoding, 参数值gbk.
问题3: 在 SQLServer 表输入步骤中使用以问号作为参数的 sql 语句 (参数的值从以前的步骤中获得),向 mysql 数据库导入数据 (使用 mysql 表输出步骤).在执行的时候报告错误 Unable to get queryfields for SQL: AND e.LOCAL_TIME? 00909 PRS INC Invalid character.原因: 从错误语句看,是参数没有被替换掉, 因为发送给 mysql 服务器的是这样的语句 AND e.LOCAL_TIME?. 参数没有被替换掉是因为从以前步骤中读取的参数值是 null.解决方法: 增加对 null 值的判断, 可以有两种方法, 如果这个值是从数据库获取的,一般的数据库都提供了处理null值的函数,如 mysql 的ISNULL 函数. 如果这个值是从其他步骤获得的,可以通过 Javascript 步骤进行判断并转换.
问题4: 使用 PDI 3.x 版本连接 DB2 数据库时会报下面的错误Error connecting to database: (using class com.ibm.db2.jcc.DB2Driver)encoding not supported!!原因: PDI 自带的DB2 JDBC Driver 的版本比较低,无法连接 GBK 编码的 DB2 数据库。解决方法: 将 DB2 数据库的编码改为 utf-8 编码。或者找高版本的 DB2 JDBC Driver 来代替 PDI 自带的DB2 JDBC Driver。
问题5: win2000 下运行,命令行太长导致spoon 或 kitchen 无法运行:原因: spoon 运行时加载了太多的 jar,win2000 下对命令行的长度有限制解决方法:1. 使用 java.ext.dirs 参数,将lib,libext,等 jar 路径都设置到这个参数下。 HYPERLINK /showthread.php?t=57843page=2 /showthread.php?t=57843page=22. 删除libext 目录下某些不需要的 jar,如各种数据库的jdbc driver3. 使用 launcher 见 HYPERLINK /browse/PDI-559 /browse/PDI-559
?
问题6: 关于资源文件 perty。
资源文件里的变量值如果有汉字,应该使用 unicode 字符方式表示,即 \uxxxx 的形式
变量值里如果有 \ 符号,要转义为 \\
文本文件输入
从文本文件中获得数据,常见的文本文件包括csv 、txt、文件等。用户要在该步骤指定文件名、文件内容、错误处理方式、过滤器、字段等项目。 参数说明: l 指定文件名的三种方式 1. 指定一个具体的文件名。
原创力文档

文档评论(0)