KETTLE使用过程中的错误集锦

1.违反唯一主键约束条件:问题是表中有俩个主键,将备用主键替换成真正的主
键或者是没有对数据做出处理加这句话and cft.DEL_FLAG!='1'或者要到的库有此数据
2.field 某列 is required and couldn't be found在表输入填上‘XXX‘ as 某列
3.某列是无效标识,把那列在表输入去掉
4.无法将null插入某列 换个日期 可以去原表里面找值;
5.文字格式与字符串不匹配 原因是俩个库给出的时间格式不一样,用substr截取好就行了
如:
字段设置时--t1.was_Deliveried_Date as FMRQ,
to_date(substr(t1.was_Deliveried_Date,1,10),'yyyy-MM-dd') as FMRQ,
截取时间时
and to_date(substr(t1.was_Deliveried_Date,1,10),'yyyy-MM-dd') = to_date('2015-01-29','yyyy-MM-dd');
6.视图给出的日期不是正常格式的:未改格式之时是2月14日2014年
Cast(wommat.CREATE_DATE As Date) as SJSCSJ
--wommat.CREATE_DATE as SJSCSJ
7.没有可用时间的,先选主表上时间,如不行在选附表
kettle报错类型:(tb_jktj_examinfo;tb_gxy_hzglk;tb_gxy_hzsfk;tb_hzxx这几张表具有代表性)
8.表输入0初始化失败! 原因:库没改对
9.the tablename is not defined(empty) 原因:区分数据不要勾
10.月份中日的值必须阶于1和当前月最后一日之间
解决方式:case when csrq > sysdate then to_date (to_char(sysdate,'yyyy-mm--dd'),'yyyy-mm-dd') else csrq end csrq
11.字符类型不对时,先看数据库对应字段是什么类型,然后在kettle改一致
12.还有常用的方式把SQL粘出来看
13.把日期做成活的
where JLSJ_YWK between to_date(to_char(${startDate},'yyyy-mm-dd'),'yyyy-mm-dd') and to_date(to_char(${endDate},'yyyy-mm-dd'),'yyyy-mm-dd')
14.无效数字:
首先关注关联查询的字段,其次重点去关注number类型的,再去找varchar类型的(varchar类型的需要关注是否超出了长度)在kettle的字段选择里面设置number的类型
如果实在找不到那就把SQL在数据库里运行。有时候也有可能是语句的问题。
以上俩种还是不能解决问题,那么只能根据报错来,弄成空看哪个报错。比如精度超出范围那就
‘ ’ as 字段出错那就是它了。
把整数字段to_number一下
15.- ORA-01013: 用户请求取消当前的操作
SQL执行超时,重新来一边
16."TB_JKTJ_EXAMINFO"."PFDM" 的值太大 (实际值: 4, 最大值: 1)
找出最大值的:
select max(lengthb(t.gmdm)) from tb_jktj_examinfo t group by t.gmdm
找出最大值里面具体写的是什么:
select t.gmdm from tb_jktj_examinfo t group by t.gmdm
然后进Kettle里面修改
17.值大于为此列指定的允许精度 直接用上共面的sql来排除number,double 和上面9都是找出来截取字段
18.无效标识是目的端没有源端字段,把源端字段删除;还有种可能是输出表的目标表名不对。
19.文字与格式字符串不匹配 在替换转换那是类型设置的不对
20. Couldn't execute SQL: TRUNCATE TABLE TB_HZXX(资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效)
21.表输出:无法初始化至少一个步骤. 执行无法开始!
这个是目的库不通,就像抽取的数据不接收。
22.在要求输入数字处找到非数字字符: 在时间的位置上填写了横杆
23. ORA-01779: 无法修改与非键值保存表对应的列
24.SqlServer String 转为 Date 类型 CONVERT(DATETIME,YSTZSJ)as YSTZSJ
25. Because of an error, this step can't continue:
org.pentaho.di.core.exception.KettleStepException:
The tablename is not defined (empty)
还有什么连接不到数据库什么的,连接错误什么得
解决办法:在表输出得提交记录数量改为500或更小
26.数据类型不一致: 应为 CHAR, 但却获得 NUMBER 解决方法:检查了下第一个返回的是‘0’(char),而后来返回的是number,于是就出现错误。将引号去掉,即让第一种情况也返回number值,就可以了。(就是将 ‘0’ 改为 0 )
27.表或试图不存在:可能的原因是裁减表出不能打对勾
28.kettle 出现不支持的SQL92 不管标记是啥,都是因为表输入的替换SQL语句里的变量没有打钩
29.The tablename is not defined : 去掉表输出中的“表分区数据”
30.数据抽取到一半报错表或视图不存在:在表输出里的目标模式清空;表输入的数据库目的端没有选对;也有可能数据库变动导致。
31. 输入值对于日期格式不够长:在kettle在字段选择里面设置日期
32.ORA-01840: 输入值对于日期格式不够长 在kettle里设置date格式
 

posted @ 2022-02-23 18:12  七窍玲珑心  阅读(1760)  评论(0编辑  收藏  举报