datastage 相关笔记
在load的时候去掉sequentialfile的header和footer
今天在论坛看到的方法,先记录下来:
方法一:
在sequentialfilestage中有个属性可以ignore第一行。对于footer,如果footer使用了与正文不同的格式,可以用使用transformerstage和@INROWNUMstage来将footer去掉。
方法二:
在sequentialfile的filteroption中使用sed-e'$d'-e'1d'来讲header和footer去掉。
方法三:
写个beforejobsubroutine,可以先对这个文件做各种处理,不过我想也是subroutine中调用DSExecutesed-e'$d'-e'1d'。当然Basic中也有专门对sequentialfile处理的函数。
posted@2007-08-1319:37羽翼渐丰阅读(163)|评论(0)|编辑收藏
posted@2007-08-0815:37羽翼渐丰阅读(406)|评论(0)|编辑收藏
trim会drop掉记录
当一条记录过来,某个字段为空,而在transformer中又对该字段trim了,由于该字段为空,不能trim,所以DataStage会认为这是个错误,从而把这个记录drop了,这与实际业务不符合,非主键字段为空并不能就把这条记录drop了。我们可以通过写一个判断来解决该问题:ifLK_1.EMAIL<>''thentrim(LK_1.EMAIL)elseLK_1.EMAIL
posted@2007-08-0221:01羽翼渐丰阅读(147)|评论(0)|编辑收藏
DataStage中可以执行routine,命令行以控制的地方
1before/afterjob和before/afterstage,可以执行shell,命令行以及一些DataStageAPI,如DSJobReport
2jobsequence中有个stage,可以在里面写控制job调度的地方
3每个job的properties中有个jobcontroltab
4命令行可以执行、导入job等,它通过dsjob实现,在DSManager的文档中还讲了有专门的命令行来导入job
5可以编写shell来控制job,对dsjob命令做封装,可以传入参数等。
对于上面这些概念还是很模糊,先记录在此。
posted@2007-08-0219:29羽翼渐丰阅读(288)|评论(0)|编辑收藏
trim全为null的某个字段之后,输出为0
今天又碰到新问题,在transformer中,进去是有很多record,出来之后为0条record,用peek,看了一下,进去的数据的某个字段数据全为null,而在transformer中对此字段trim了,改为不trim就可以了。
posted@2007-08-0215:21羽翼渐丰阅读(211)|评论(0)|编辑收藏
job一直运行,数据不能插入数据库
今天遇到一个问题,job不停的在那里运行,然后link上的数据显示各个环节都是正确的,包括最后插入数据库的link上也显示了数据,但是最后数据库里并没有数据。在Director的log中,日志在从两个源文件把所有数据load出来完之后,日志就死在那里了。
以前这个job是正确的,昨天由于重新load其中一个源文件的元数据,所以出现了上述问题。所以先前以为是由于load的新的源数据有问题,就从此处来找问题的原因,并且认为可能是改了元数据,在其他地方映射的时候有位置不对的地方,所以整了很久。因为以前是好好的,然后又以为是服务器的问题。
这都是定势思维的错误,然后又一急,所以浪费了很多时间,其实很多时候都是这样,出了问题我们不能理性的好好思考。
其实问题很简单:
如果我们按照正常逻辑来分析的话,既然不能读入数据库,肯定是数据不符合数据库对数据的约束,包括主键啊,非空啊,本问题就是由于在stage的不断流转中产生了很多空格,使得最后待插入的数据长度远远大于数据库中定义的字段长度。由于在那里不断reject,所以影响了速度,job一直在那里运行。最后用APT_STRING_PADDER,将其设为0x0(用null代替空格)搞定。
ps:在插入数据库时使用一个reject文件对查错有好处,这样能看到reject是些什么数据,然后就能知道为什么被reject了。
同时我们可以得出如果最后插入数据库时很多数据被reject,但是你并没有用一个reject文件来接收这些reject掉的数据,将使得job基本处于停滞状态。
posted@2007-08-0117:33羽翼渐丰阅读(176)|评论(0)|编辑收藏
DataStageJob重置的三种方法
当一个Job跑到一半终止了要还原,在DSDirector中主要有三种方法来还原:
1Job-----Reset
2Job-----ClearStatusFile
3Job-----CleanupResource
具体细节也不懂,有时间慢慢研究
posted@2007-08-0110:17羽翼渐丰阅读(192)|评论(0)|编辑收藏
Datastage快捷键
DatastageDesiner的快捷键
1关闭某个job<Ctrl+F4>
2<Ctrl+F6>同时打开了两个以上job,在不同的job之间切换。
DatastageDirector的快捷键
posted@2007-07-2417:00羽翼渐丰阅读(180)|评论(0)|编辑收藏
2008-7-2312:06回复