`
lychee_cao
  • 浏览: 23932 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

datastage 相关笔记

 
阅读更多
在load的时候去掉sequential file的header和footer 
今天在论坛看到的方法,先记录下来:
方法一:
在sequential file stage中有个属性可以ignore第一行。对于footer,如果footer使用了与正文不同的格式,可以用使用transformer stage和 @INROWNUM stage来将footer去掉。
方法二:
在sequential file的filter option中使用sed -e '$d' -e '1d'来讲header和footer去掉。
方法三:
写个before job subroutine,可以先对这个文件做各种处理,不过我想也是subroutine中调用DSExecute sed -e '$d' -e '1d'。当然Basic中也有专门对sequential file处理的函数。

posted @ 2007-08-13 19:37 羽翼渐丰 阅读(163) | 评论 (0) | 编辑 收藏 
posted @ 2007-08-08 15:37 羽翼渐丰 阅读(406) | 评论 (0) | 编辑 收藏 
 
trim会drop掉记录 
当一条记录过来,某个字段为空,而在transformer中又对该字段trim了,由于该字段为空,不能trim,所以DataStage会认为这是个错误,从而把这个记录drop了,这与实际业务不符合,非主键字段为空并不能就把这条记录drop了。我们可以通过写一个判断来解决该问题:if LK_1.EMAIL <> '' then trim(LK_1.EMAIL) else LK_1.EMAIL 
posted @ 2007-08-02 21:01 羽翼渐丰 阅读(147) | 评论 (0) | 编辑 收藏 
 
DataStage中可以执行routine,命令行以控制的地方 
1 before/after job和before/after stage,可以执行shell,命令行以及一些DataStage API,如DSJobReport
2 job sequence中有个stage,可以在里面写控制job调度的地方
3 每个job的properties中有个job control tab
4 命令行可以执行、导入job等,它通过dsjob实现,在DS Manager的文档中还讲了有专门的命令行来导入job
5 可以编写shell来控制job,对dsjob命令做封装,可以传入参数等。
对于上面这些概念还是很模糊,先记录在此。 
posted @ 2007-08-02 19:29 羽翼渐丰 阅读(288) | 评论 (0) | 编辑 收藏 
 
trim全为null的某个字段之后,输出为0 
今天又碰到新问题,在transformer中,进去是有很多record,出来之后为0条record,用peek,看了一下,进去的数据的某个字段数据全为null,而在transformer中对此字段trim了,改为不trim就可以了。 
posted @ 2007-08-02 15: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-01 17:33 羽翼渐丰 阅读(176) | 评论 (0) | 编辑 收藏 
 
DataStage Job重置的三种方法 
当一个Job跑到一半终止了要还原,在DS Director中主要有三种方法来还原:
1 Job-----Reset
2 Job-----Clear Status File
3 Job-----Cleanup Resource
具体细节也不懂,有时间慢慢研究

posted @ 2007-08-01 10:17 羽翼渐丰 阅读(192) | 评论 (0) | 编辑 收藏 
 
Datastage快捷键 
Datastage Desiner的快捷键
1 关闭某个job <Ctrl+F4>
2 <Ctrl+F6>同时打开了两个以上job,在不同的job之间切换。
Datastage Director的快捷键

posted @ 2007-07-24 17:00 羽翼渐丰 阅读(180) | 评论 (0) | 编辑 收藏

2008-7-23 12:06 回复 
分享到:
评论
1 楼 小玩子 2010-09-01  
能给发个datastage工具无论哪个版本都可以,我在网上找了半天都找不到,谢谢了啊,可以传QQ121784456邮箱里,谢谢

相关推荐

Global site tag (gtag.js) - Google Analytics