datastagedads

发布时间 : 星期五 文章datastagedads更新完毕开始阅读

工作总结 Repeat 2007 这段代码的功能是从输入的字符串中把每一个子串分离出来,然后判断每一个子串对应的二进制数中的值是否为\。如果其对应的数是\,就直接进行下一个循环去处理下一个子串。如果其对应的数是\则继续判断这个子串是否符合命名的规则,如果符合就把子串添加到输出字符串中;如果不符合规则就在日志信息中提示用户输入的字符串有错误,之后跳出循环。

在循环语句中可以使用两个用来控制循环的关键字Continue和Exit:Continue用来结束本次循环,进行下一次循环;而Exit的功能是退出当前循环。 (5). 一些BASIC语言中处理字符串的函数。

? ?

使用冒号\:\作为字符串连接的符号。

例如:\等价于字符串 \使用中括号[ ]来取出某个字符串的子串,其语法如下: expression [ [ start, ] length ]

例如:strA=\那么strA[1,3]的意思就是从序号为1的字符开始,一共取出三个字符,其结果就是\。BASIC语言中数组或者字符串的第一个元素的序号是1。

? Count (string, substring)用来计算字符串中的某个子串出现的次数。

例如:计算字符串\中的子串\出现的次数,arrCnt = Count(\,那么arrCnt就等于2。

? ?

Len (string) 用来计算字符串中包含的字符的个数。 例如:Len(\的值就是3。

TRIMF (string) 用来删掉字符串首部的空格。 TRIMB (string) 用来删掉字符串尾部的空格。

例如,字符串strA=\,其首尾各有多个空格。经过strA= TRIMF (strA)和strA= TRIMB (strA)这样的处理就可以除掉字符串首尾的所有空格了,其结果是\。

? Index (string, substring, instance) 用来得到字符串中的某个子串的位置。其中instance表示这个子串是在整个字符串中是第几次出现。

例如:字符串为\,要计算子串\第二次出现在字符串中的位置。Index (\\的结果就是5。

(6). 读者看到代码中的这一行subStr match \,也许会觉得迷惑,下面就重点讲解一下BASIC语言中的模式匹配规则(Pattern Matching)。 表1. DataStage BASIC语言中的模式匹配规则 模式名 … 0X nX 0A nA 0N nN 'string' ~ 含义 任意类型任意个数的字符 任意类型任意个数的字符 n个任意类型的字符 任意个数的字母 n个字母 任意个数的数字 n个数字 单引号或者双引号中包含的具体字符串 不匹配某种模式 Individual 2007-10 21 /

65

工作总结 \模式就是限制字符串只能包含八个字符,并且前五个字符必须是字母,第六个字符是下划线\,最后两个字符必须是数字。字符串\能匹配上这种模式,而字符串\或者\都不满足这种格式要求。 如果规则变成\,这个模式就是限制字符串的前五个字符必须是字母,第六个字符是下划线\,而最后两个字符必须是非数字的字符,例如:\能和这个规则匹配上。这时,字符串\不再符合新规则的要求,字符串\也不能满足要求。

(7).对编写好的代码进行编译。用户只需要点击图8中的编译(Compile)按钮即可,编译的结果出现在New Server Routine编辑窗口中Code标签页面的下部区域内。使用编译器对程序进行编译不仅可以帮助用户检查程序中潜在的语法错误,更重要的是,编译成功后的源代码将转化为可执行的对象代码(object code)。

2007 3 DS中常见问题记录

3.1 权限管理问题

DATASTAGE开发权限上处理,非DSTAGE组用户无法登陆DS,如果将其放入DSTAGE组,由于DS是根据组来控制权限所以会造成可以访问其他project。如何处理非DSTAGE组的用户授权,让其只访问自己的project ?

答:

先建立一个组,在建立一个user,将该用户放在该组中,然后给../Ascential/DataStage目录下的DSEngine和PXEngine.751.1、PXEngine.751.2、PXEngine、DSParallel、Scratch目录包括其子目录赋777权限,收回project目录下的其他项目的可读权限。假设该用户只能访问training这项目,那么给该项目赋可读写权限。

添加datastage用户: 进入smit

3.2 job may be being monitored或者是cleanup问题

在datastage中有一个job名为N_Cv_DataStore_TT_PART_LEND_ITEM和N_Cv_ServiceLink_TT_SGM_PT_ADVANCERATE不可以编译,报job may be being monitored,但是找不到任何进程在调用该job.

答:

在Director中选中该Job,到菜单中选择Job--Clear Status File即可解决。

3.3 删除文件的问题

会有要手动清理日志状态文件的情况出现

Cannot get exclusive access to executable file for job I_Cv_DOL_TM_ORG_TYPE - job may be being monitored. 怎么解决? 答:

Individual 2007-10 22 /

65

工作总结 2007 如果清除不成功,可以使用更高权限的用户进行清除。 3.4 sequence调度出现的错误问题

手动编译相关JOB后,有的JOB的失败因为下面这个错误。 GC job 显示FINISH 但SC JOB显示 finish(see log) 里面的错误提示是:

I_Ss_Source_DOL..JobControl (fatal error from @Coordinator): Sequence job will abort due to previous

unrecoverable errors。

a. CNTR_WDolTmOrgTypeCif,0: Unable to run job - -2. 答:

是由于系统资源不够引起,建议减少并行运行的job个数 。

3.17 字符集问题

DataStage全局字符集设为UTF-8,抽取Oracle GB2312字符集的数据源、SQL Server GB2312字符集的数据源及GB2312字符集的CSV格式文本文件时无法正常处理 ? 答:

采用GBK字符集 。 3.18 VersionControl的问题

将可以正常运行的JOB提交到VersionControl后,再从VersionControl提交到167上运行,程序报NLS Mapping error的Warning,中文字符会变为乱码。

例如:167上的JOB N_Tr_EDS_TI_SWA_CLAIMS_ORIGIN_02

167上的工程SGMEDW与对应的VersionControl工程VERSION_EDS的NLS都已经设置成一致。

ERROR LOG:

N_Tr_EDS_TI_SWA_CLAIMS_ORIGIN_02.0.CNTR_WEdsTiSwaClaimsOriginLdf.SF_TI_SWA_CLAIMS_ORIGIN_LDF.LK01: nls_map_buffer_out() - NLS mapping error, row 1 (approx), row = \\\\\\ \

\ 0. 0.00 8.070200000 0.00 \\\\\\\\\\CHANGE OIL\\ 00000000. 00000000. \\ 00006476. 00010416. 0.00 0.00 \\91.19 735.93 \答:

两者版本不一致造成的,开发机器上DATASTAGE版本为7.5.1A升级到7.5.2版本就没问题了。

Individual 2007-10 23 /

65

工作总结 2007 3.19 sequence调不起JOB的问题 Sequence Job 调不起相关的 JOB 错误提示: I_Ss_Source_Fo08..JobControl (@Fo08_TM_VEHICLE_PRODUCT): Controller problem: Error calling DSRunJob(I_Gc_Fo08_TM_VEHICLE_PRODUCT), code=-99 [General repository interface 'other error'] 答:

处理方法:编译重跑 。

3.20 sequence调度失败的问题 Sequence Job 自动失败

错误提示如下: Job control process (pid 835698) has failed 处理方法:编译重跑

3.21 用stage调用存储过程运行失败的问题

问题描述:最初用etlmain帐号在数据库中创建了一个存储过程,然后用stage来调用很正常;后来etlmain这个帐号被删除掉了,然后在用其他帐号来调用这个存储过程的时候就报如下截图上的错误(尽管其他帐号对这个存储过程拥有的权限和etlmain一样)!

Individual 2007-10 24 /

65

联系合同范文客服:xxxxx#qq.com(#替换为@)