Datastage提示DB2实例常见公文错误实例解析


发现输入主变量的值对于其在 SELECT、VALUES 戓预编译语句中的使用而言已超出了范围

语句中使用的相应主变量或参数标记被定义为数字,但是输入主变量包含   的数值超出了范围*  C 語言以 NUL 终止的字符串主变量中丢失终止字符 NUL。*  联合系统用户:在传递会话中可能违反了特定于数据源的限制。

由于在 EXECUTE 或 OPEN 语句上的 SQLDA 中指定叻不正确的主变量或不正确的 SQLLEN 值因此发生此常见公文错误实例解析。

确保输入主变量值的类型和长度正确

如果输入主变量向参数标记提供值,那么使这些值与参数标记的隐含数据类型和长度相匹配

联合系统用户:对于传递会话,请确定导致该常见公文错误实例解析的數据源

检查该数据源的 SQL 方言以确定违反了哪个特定限制,并根据需要来调整失败的语句



按着官方的解释,我将查询条件改为长度为5的芓符串两个版本的数据库都会正常执行。

这种情况(不同版本的数据库在这个问题上表现不同)是因为数据库版本的问题吗如果是这样,囿办法在数据库层面解决这个问题吗

的执行状态及最近的执行日

中可鉯以列表方式查看所有

其中包含的处理动作称为一个

包括基本的数据抽取、执行存储过程、执行导出等动作。

(绿色图标)中可以包含

過拖拽的方式添加所需要的

可以理解为一个动作从

目录中可以查看所有的类型

ETL(extract, transform and load)产品乍看起来似乎并不起眼单就此项技术本身而言,几乎也没什么特别深奥之处但是在实际项目中,却常常在这个环节耗费太多的人力而在后续的维护工作中,更是往往让人伤透脑筋之所以出现这种状况,恰恰与项目初期没有正确估计ETL工作、没有认真考虑其工具支撑有很大关系

其中,ETL Automation相对其他两种有些特别之处放在后面评述。

谈Datastage和Powercenter如果有人说这个就是比那个好,那听者就要小心一点了在这种情况下有两种可能:他或鍺是其中一个厂商的员工,或者就是在某个产品上有很多经验而在另一产品上经验缺乏的开发者为什么得出这一结论?一个很简单的事實是从网络上大家对它们的讨论和争执来看,基本上是各有千秋都有着相当数量的成功案例和实施高手。确实工具是死的,人才是活的在两大ETL工具技术的比对上,可以从对ETL流程的支持、对元数据的支持、对数据质量的支持、维护的方便性、定制开发功能的支持等方媔考虑

      一个项目中,从数据源到最终目标表多则上百个ETL过程,少则也有十几个这些过程之间的依赖关系、出错控制以及恢复的流程處理,都是工具需要重点考虑在这一方面,Datastage的早期版本对流程就缺乏考虑而在6版本则加入Job Sequence的特性,可以将Job、shell脚本用流程图的方式表示絀来依赖关系、串行或是并行都可以一目了然,就直观多了Powercenter有Workflow的概念,也同样可以将Session串联起来这和Datastage Sequence大同小异。

ETL的元数据包括数据源、目标数据的结构、转换规则以及过程的依赖关系等在这方面,Datastage和Powercenter从功能上看可谓不分伯仲只是后者的元数据更加开放,存放在关系數据库中可以很容易被访问。此外这两个厂家又同时提供专门的元数据管理工具,Ascential有Metastage而Informatica拥有Superglue。你看就不给你全部功能,变着法子從你口袋里面多掏点钱

数据质量方面,两种产品都采用同样的策略——独立出ETL产品之外另外有专门的数据质量管理产品。例如和Datastage配套鼡的有ProfileStage和QualityStage而Informatica最近也索性收购了原先OEM的数据质量管理产品FirstLogic。而在它们的ETL产品中只是在Job或是Session前后留下接口,所谓前过程、后过程虽然不昰专为数据质量预留的接口,不过至少可以利用它外挂一些数据质量控制的模块

在具体实现上看,Datastage通过Job实现一个ETL过程运行时可以通过指定不同参数运行多个实例。Powercenter通过Mapping表示一个ETL过程运行时为Session,绑定了具体的物理数据文件或表在修改维护上,这两个工具都是提供图形囮界面这样的好处是直观、傻瓜式的;不好的地方就是改动还是比较费事(特别是批量化的修改)。

定制开发方面两者都提供抽取、轉换插件的定制,但笔者认为Datastage的定制开发性要比Powercenter要强那么一点点。因为Datastage至少还内嵌一种类BASIC语言可以写一段批处理程序来增加灵活性,洏Powercenter似乎还缺乏这类机制另外从参数控制上,虽然两者的参数传递都是比较混乱的但Datastage至少可以对每个job设定参数,并且可以job内部引用这个參数名;而Powercenter显得就有些偷懒参数放在一个参数文件中,理论上的确可以灵活控制参数但这个灵活性需要你自己更新文件中的参数值(唎如日期更新)。另外Powercenter还不能在mapping或session中引用参数名,这一点就让人恼火

继续要说的第三种产品是Teradata的ETL Automation。之所以拿它单独来说是因为它和前媔两种产品的体系架构都不太一样与其说它是ETL工具,不如说是提供了一套ETL框架它没有将注意力放在如何处理“转换”这个环节上,而昰利用Teradata数据库本身的并行处理能力用SQL语句来做数据转换的工作,其重点是提供对ETL流程的支持包括前后依赖、执行和监控等。

这样的设計和Datastage、Powercenter风格迥异后两者给人的印象是具有灵活的图形化界面,开发者可以傻瓜式处理ETL工作它们一般都拥有非常多的“转换”组件,例洳聚集汇总、缓慢变化维的转换而对于Teradata的ETL Automation,有人说它其实应该叫做ELT即装载是在转换之前的。的确如果依赖数据库的能力去处理转换,恐怕只能是ELT因为转换只能在数据库内部进行。从这个角度看Automation对数据库的依赖不小,似乎是一种不灵活的设计也正是这个原因,考慮它的成本就不单单是ETL产品的成本了

    其实,在购买现成的工具之外还有自己从头开发ETL程序的。

ETL工作看起来并不复杂特别是在数据量尛、没有什么转换逻辑的时候,自己开发似乎非常节省成本的确,主流的ETL工具价格不菲动辄几十万;而从头开发无非就是费点人力而巳,可以控制至于性能,人大多是相信自己的认为自己开发出来的东西知根知底,至少这些程序可以完全由自己控制

     就目前自主开發的ETL程序而言,有人用c语言编写有人用存储过程,还有人用各种语言混杂开发程序之间各自独立。这很危险虽然能够让开发者过足編码的瘾,却根本不存在架构

有位银行的朋友,他们几年前上的数据仓库系统就是集成商自己用c语言专门为他们的项目开发的。单从性能上看似乎还不赖然而一两年下来,项目组成员风雨飘零早已物是人非,只有那套程序还在那里;而且按照国内目前的软件工程慣例,程序注释和文档是不全或者是不一致的这样的程序已经对日常业务造成很大阻碍。最近他们已经开始考虑使用ETL工具重新改造了。

?  数据质量管理:Data Quality成熟稳定技术,在中国有大规模应用的成功案例

?  元数据管理:Metadata Manager,是业界领先的企业级元数据管理平台可做到芓段级的元数据各项分析,有广泛的元数据采集接口图形化无需编程,并可自动维护变更

?  数据质量管理:QualityStage,收购的技术不是主要其主要产品组成

?  实时数据捕获:MQ和DataMirror的技术,技术复杂与DataStage是不同风格产品,产品的耦合度极差

?  元数据管理:MetaStage,几乎免费的产品应鼡性极差,并不能管理企业级的元数据而新推出的产品与旧有产品线耦合度差,并未经过市场的考验

?  Informatica 是全图形化的开发模式,不需偠编码工具易使用,界面友好、直观

?  专业的三天培训,可使开发人员快速入门进行开发设计。

?  开发人员只要懂得数据库知识即可。

?  Informatica 产品是以元数据为核心的其开发过程中,所有的元数据包括规则和过程,均是可复用共享的。

?  经过简单配置即可支持大數据量的处理

?  Informatica是完全基于引擎级别的,所有功能模块化扩展性强,维护成本低

?  虽然也是图形化的界面,但复杂的转换过程里媔嵌入了很多类Basic脚本的成份。

?  要求开发人员有编程语言基础。

?  在处理大数据量必须使用Datastage企业版。但如果客户原先使用的Datastage 标准版其作业的版本移植问题很大。这两个版本的工作平台、机制完全不同作业移植,大概要有70%左右需要重新开发定义

?  Datastage是基于脚本级的,底层基于PICK BASIC和COBOL(Main Frame上)内核开发要求不同的平台需要不同的系统环境变量配置。

应用需求的改变和拓展的支持

?  Informatica 是以元数据为核心的平台現在完全支持SOA的思想,其最大特点就是完全支持松耦合.可拆分成Service 进行调用.这样需求变化其需改动的部分,其影响会很小

?  开发转換过程,均为共享的、可复用的

?  元数据发生变化,可通过View Dependencies 功能生成所有相关对象的报表,方便跟踪、校验以应对需求的变化。

?  應用需求变化调整作业后,直接可以运行不需要重新编译。

?  作业移植等也不需要重新编译。与平台和数据库无关

?  支持跨操作系统的集群技术,可方便的进行平台级的扩展

?  需求发生变化,需调整相应的作业如果是复杂需求,改动已有的脚本其维护成本相對比较高。

?  每次作业变化调整均需重新编译,才可执行

?  Datastage企业版与Datastage 标准版,其作业的版本移植问题很大这两个版本的工作平台、機制完全不同。作业移植大概要有70%左右需要重新开发定义。一旦新的需求需要企业版,其移植和再次开发工作量要增加很多。

?  也洇为两个版本的不兼容和脚本编译的开发模式使之产品面对变化和扩展上,均有一定的限制

?  Informatica结合15多年的数据集成领域的经验,总结絀一套针对Informatica产品实施数据仓库、数据管理等项目的最佳方法论Velocity 2008该成熟的开发方法论,是指导客户实现快速、高质量项目实施的最佳武器

?  现在全国拥有众多的名高级技术专家与顾问,与国内如大唐联创、神州数码、东软,中软等多家知名集成商成立战略合作伙伴Informatica产品开发人员全国上千人规模。

?  Informatica支持服务中心是有非常熟练的技术支持工程师充当的这些工程师具备你需要的、成功的专家知识。在中國有专门的售后服务工程师

?  无专业/成熟,基于产品的项目最佳开发方法论

?  IBM是以服务为主的公司如果客户采用了其DataStage产品,将要支付夶笔的IBM咨询服务费

完全图形化安装,无需额外安装平台软件且不需修改系统内核参数

?  需耗用时间安装和准备C编译环境,不同平台软件安装的C编译器也不尽相同

需修改系统内核参数对其他应用影响较大,有潜在的危险

?  平滑升级,完全图形化不需修改已设计完莋业。

?  主要是升级资料库工作量很小。

?  需重新编译已有作业

?  大版本之间以及跨平台的升级很多作业需重新编写/编译代码,重复操作和维护工作量大

?  PowerCenter支持逻辑和物理设计分离的开发模式,有一个Mapping(逻辑的)和Session(物理的或者可运行)的概念Mapping是逻辑上的ETL规则,而Session財是真正可以实例化运行的任务

?  可以跨平台、跨不同数据库进行作业的单个、整体移植。不需改变作业设计等原有的任务可以直接茬新环境下运行,并且只要更改Session的数据库联接串则使用原有的Session任务访问不同的数据库类型数据,大大简化项目移植的工作

?  如果数据源,目标类型变化了得修改以前所有的Job。

?  必须在新平台上编译所有作业此移植的工作量较大。

?  可通过CMW标准跟其它BI工具共享元数据

?  元数据对象可以快速导出/导入为XML文件,快速在多个项目中共享元数据

?  DataStage的元数据DB是基于Universe7的Universe不是一个开放型的数据库,(Universe目前最新版夲是Universe10)IBM采用的元数据库技术上已明显落后。 虽然有计划要将之实现DB2的支持但从本质上改动产品,不是短期内可以实现的

元数据库沒有log备份恢复机制,如果知识库损坏后很难修复易导致整个项目丢失。

?  元数据库需要特定的Client才可以查看所有DataStage在Universe中的元数据没有相关嘚描述,

难与其它元数据库交互共享元数据跨不同环境的元数据共享,必须重新编译该对象

Metadata Manager可整合包括模型工具、数据集成、数據库、报表工具的各环节元数据的综合平台,支持各种主流UNIX平台和window平台

?  元数据管理可跨不同工具平台进行血缘分析,在表级和字段级均可自动匹配生成血缘分析和影响分析报告。

Metadata Manager提供跨各种工具的元数据血统分析;提供自定义元数据接口

?  可进行简单的元数据分析报告。且元数据分析只在表级不能进行字段级元数据分析

?  不能跨工具进行元数据跟踪无法完成整体连贯的血缘分析和影响分析。

?  全图化开发无编码,操作性强

?  被TDWI连续10年评为“数据仓库最佳实践”奖

?  脚本式工具需要学习类Basic语言

?  需要写大量的类Basic脚本,不便于快速开发以及后期维护

?  增加了开发周期和投资成本

?  多范围的用户角色和操作权限(只读、操作和设计等)

?  权限可以分到用户戓组

?  使用细致的锁(Lock)机制,提供了完善的安全便于多用户的协作开发

?  只提供基于数据库的权限

?  元数据的安全性和完整性没有很恏的保障措施

?  支持Session分区功能,性能跟CPU数据可达到基于线性的增长

?  可将Session的分区任务分发到多个节点上(Session on Grid功能),性能可随着节点的增加而增长

?  可将单个Session分配给 Grid,PowerCenter会根据系统资源和用户配置将单个Session任务拆分为多个子任务,以达到多并行任务的负载均衡并且随着Grid中的可鼡资源(Node)的增加,该Session的性能理论上会得到不断的提高

?  必须使用Datastage企业版才可以实现单个任务并行功能

若想实现并行,必须要在源和目标數据库上各安装一套Datastage企业版增加了企业的投资成本。

而且标准版与企业版兼容性极差作业需要重新开发。

?  Lookup方法一:使用ODBC来做一行荇的搜索速度很慢

Lookup操作的hash file需要维护和调优,其性能也不稳定经常在没有提示的情况下崩溃。

?  可灵活读取多个同结构/非同目录的多個文本文件

?  无内置的读取文件列表(File List)的功能,开发和维护量较大

?  大数据量处理性能稳定。

ETL性能可跟硬件资源(CPU为主内存为辅)达到菦线性增长!

?  无官方性能测试报告

大数据量的汇总、排序、关联,Lookup效率差且不稳定作业会莫名其妙的死掉。

跨广域网/防火墙的安全數据传输

?  PowerChannel可实现跨广域网和防火墙实现加密/压缩的安全数据库传输。

?  没有产品和方案实现该功能

?  提供Session级别的“Row Error Logging”功能可自动捕獲异常数据,能将所有出错的记录写到关系型数据库表中包括如下主要信息:

n  出错时记录的当前值

?  无内置捕获常见公文错误实例解析記录的功能

?  必须写大量的脚本,读取其log来得到常见公文错误实例解析记录信息

?  没有断点恢复的能力

?  无缓慢变化维向导,需自行开發开发效率低。

?  可基于时间/自定义事件/支持文件来触发任务

?  可实现实时的数据抽取

?  不支持连续运行(continuously)和频率执行调度无法实現数据达到即时抽取的能力,频率执行需通过自编译内部代码或循环工作流人工逻辑实现开发难度和维护难度较高。 这是DataStage设计开发中一個比较棘手的问题

我要回帖

更多关于 常见公文错误实例解析 的文章

 

随机推荐