组件什么是通配符

什么是通配符  时间:2021-04-11  阅读:()
用户指南SybaseETL4.
9文档ID:DC00961-01-0490-01最后修订日期:2009年9月版权所有2009Sybase,Inc.
保留所有权利.
除非新版本或技术声明中另有说明,否则本出版物适用于Sybase软件及所有后续版本.
本文档中的信息如有更改,恕不另行通知.
本出版物中描述的软件按许可协议提供,其使用或复制必须符合许可条款.
要订购其它文档,美国和加拿大的客户请拨打客户服务部门电话(800)685-8225或发传真至(617)229-9845.
持有美国许可协议的其它国家/地区的客户可通过上述传真号码与客户服务部门联系.
所有其他国际客户请与Sybase子公司或当地分销商联系.
仅在软件的定期发布日期提供升级内容.
未经Sybase,Inc.
的事先书面许可,不得以任何形式、任何手段(电子的、机械的、手工的、光学的或其它手段)复制、传播或翻译本手册的任何部分.
可在theSybasetrademarkspage位于http://www.
sybase.
com/detailid=1011207中查看Sybase商标.
Sybase和所列标记均为Sybase,Inc.
的商标.
表示已在美国注册.
Java和基于Java的所有标记都是SunMicrosystems,Inc.
在美国和其它国家/地区的商标或注册商标.
Unicode和Unicode徽标是Unicode,Inc.
的注册商标.
本书中提到的所有其它公司和产品名均可能是与之相关的相应公司的商标.
政府使用、复制或公开本软件受DFARS52.
227-7013中的附属条款(c)(1)(ii)(针对国防部)和FAR52.
227-19(a)-(d)(针对非军事机构)条款的限制.
Sybase,Inc.
,OneSybaseDrive,Dublin,CA94568.
内容用户指南iii关于本手册.
xi第1章SybaseETL.
1SybaseETL体系结构1SybaseETL概念3存储库.
3项目和作业4组件6SQL语句6JavaScript.
6数据类型和数据格式7对Unicode的支持.
7工具7第2章快速入门9启动SybaseETL9在演示存储库中设置新的用户帐户10使用SybaseETLDevelopment界面10Navigator.
11"Assistant"窗口15"Properties"窗口.
16"Design"窗口.
18ComponentStore19自定义首选项.
19故障排除.
22第3章项目和作业25管理项目.
25模拟项目27执行项目34安排项目34管理作业.
35作业组件35内容ivSybaseETL控制作业执行.
37执行作业.
37安排作业.
37使用模板创建项目和作业.
38使用模板助手构建迁移模板38管理迁移模板.
41创建和模拟示例项目.
43添加数据提供程序.
43添加数据接收器44添加DataCalculator45启动模拟.
46第4章高级概念和工具47QueryDesigner.
47打开QueryDesigner.
48"QueryDesigner"界面.
48创建查询.
49ContentExplorer51FileLogInspector.
51管理作业和预定任务.
53自定义SQL和转换规则56表达式和过程.
57变量57函数58中括号表示法.
59使用SQL属性.
59使用SBN表达式.
61使用JavaScript编辑器和调试程序.
62执行SQL查询和命令.
66参数集67管理参数集67分配参数值69使用多个引擎可缩短作业执行时间71定义多引擎作业72执行多引擎作业72引擎监视器73ExecutionMonitor73取消作业执行.
74分析性能数据.
74查看性能数据.
75查看项目性能数据.
75查看作业性能数据.
76性能数据模型和内容.
77为运行时事件配置警报78目录用户指南v第5章组件81概述81设置组件属性.
82提供对组件的说明.
83配置端口结构.
84模拟组件.
86数据库连接设置87源组件88DBDataProviderFullLoad.
88DBDataProviderIndexLoad.
91TextDataProvider94XMLviaSQLDataProvider98CDCProviderSybaseReplicationServer.
105转换组件.
120CharacterMapper121CopySplitter.
124DataCalculatorJavaScript.
125DataSplitterJavaScript.
131SQLExecutor.
134查找组件.
136DBLookup.
136DBLookupDynamic.
139Staging组件.
142DBStaging142目标组件.
148使用DBDataSink组件进行批量装载的先决条件.
148DBBulkLoadSybaseIQ.
149DBDataSinkDelete160DBDataSinkInsert.
164DBDataSinkUpdate169TextDataSink.
173Loader组件.
178IQLoaderFileviaLoadTable.
179可选属性.
180IQLoaderDBviaInsertLocation184作业组件.
189Start.
190Project190Synchronizer191Multi-Project192Finish.
193错误194内容viSybaseETL第6章SybaseETLServer195启动和停止SybaseETLServer.
196启动SybaseETLServer.
196将SybaseETLServer作为Windows系统服务启动196停止SybaseETLServer.
197命令行参数197使用ETLServer执行项目和作业.
199同时执行多个项目200INI文件设置201Default.
ini202使用Web浏览器监控项目和作业.
204SybaseETLServer故障排除.
207附录A函数参考.
209uAvg210uMax210uMin210uBitAnd.
211uBitOr211uIsAscending.
212uIsBoolean213uIsDate.
213uIsDescending214uIsEmpty215uIsInteger215uIsFloat215uIsNull216uIsNumber.
216uBase64Decode.
217uBase64Encode.
217uConvertDate218uFromHex219uToHex.
220uHexDecode220uHexEncode.
220uToUnicode.
221uURIDecode.
221uURIEncode.
221时间字符串222修饰符223日期和时间计算.
224已知限制.
225日期和时间函数列表.
225uDate.
227目录用户指南viiuDateTime.
227uDay.
228uDayOfYear228uHour228uQuarter.
229uIsoWeek229uJuliandate.
230uMinute230uMonth231uMonthName.
231uMonthNameShort232uSeconds232uTime233uTimeDiffMs233uWeek233uWeekday234uWeekdayName.
234uWeekdayNameShort235uYear.
235uError236uErrortext236uInfo237uWarning.
237uTrace238uTracelevel.
238uFileInfo239uFileRead.
240uFileWrite241uFormatDate242uGlob.
243uLike.
244uMatches.
245uChoice245uFirstDifferent.
246uFirstNotNull246uElements247uToken247uCommandLine.
248uGetEnv248uGuid.
249uMD5.
249uScriptLoad249uSetEnv.
250uSetLocale250内容viiiSybaseETLuSleep254uSystemFolder.
254uHostname.
258uSMTP259uAbs261uCeil261uDiv262uExp262uFloor262uLn263uLog263uMod263uPow,uPower.
264uRandom.
264uRound.
264uSgn.
265uSqrt.
265uEvaluate266uAsc,uUnicode267uChr,uUniChr268uCap.
268uCon,uConcat268uJoin.
269uLeft269uLength,uLen270uSubstr,uMid270uLPos270uLower,uLow.
271uLStuff.
271uLTrim271uRepeat.
272uReplace272uReverse.
273uRight.
273uRPos273uRStuff274uRTrim274uTrim275uUpper,uUpp.
275uAcos276uAsin276uAtan.
276uCos.
276uSin277uTan277目录用户指南ix附录B连接参数279特定于接口的数据库选项.
279数据库和接口支持284使用SQLitePersistent接口.
284连接到SQLite数据库.
285创建SQLite表.
285从SQLite数据库提取数据.
285使用Oracle接口286附录C将ETL用于渐变维度287概述287案例研究应用场景288为SCD设置ETL项目291了解目标维度表292检测源更改292过滤记录.
296填充目标维度表297附录D最佳实践299使用ETLServer的最佳实践.
299避免启动多个ETLServer会话299输入缺省端口号以执行命令行.
299输入查询时使用列的别名.
300请勿在事务性项目中执行DDL操作300使用ETL组件的最佳实践300迁移宽表.
300导入具有32个以上同级元素的XML文件.
301将源文本文件的最后一行装载到SybaseIQ301配置AdaptiveServerEnterprise以进行批量复制301添加35个以下的DataCalculatorJavaScript和DBStaging组件302增加AdaptiveServerODBC驱动程序的文本大小.
302当在不同平台上执行项目时,不得更改源文本文件中的分隔符.
302在Windows上设置命名管道权限.
303将表迁移到包含LOB列的IQ.
303使用国际化的最佳实践303正确分析具有字节顺序标记的源文件.
303设置ETL以支持UTF-8编码304选择正确的字符集编码以正确显示Unicode字符304索引.
305内容xSybaseETL用户指南xi关于本手册读者本指南面向SybaseETLDevelopment用户.
如何使用本手册本手册包含以下章节:第1章"SybaseETL",概述了SybaseETL体系结构以及SybaseETLDevelopment和SybaseETLServer的功能集.
第2章"快速入门",介绍如何开始使用SybaseETL.
它可使您熟悉SybaseETLDevelopment界面,并说明了使用此界面可以执行的功能.
第3章"项目和作业",介绍如何创建、模拟和执行项目和作业.
本章讨论如何使用模拟模式,以及如何使用模板创建项目和作业.
第4章"高级概念和工具",介绍了一些可以简化设计工作的内置工具.
第5章"组件",介绍用于创建项目和作业的SybaseETL组件.
第6章"SybaseETLServer",提供有关如何使用SybaseETLServer的信息.
附录A"函数参考",说明了在SybaseETL中可用的内置函数.
附录B"连接参数",描述了数据库配置选项,还提供了有关所支持的部分接口的其它信息.
附录C"将ETL用于渐变维度",介绍渐变维度(SCD),包括某些常见SCD方案,并介绍如何使用SybaseETL实现这些方案.
附录D"最佳实践",介绍使用SybaseETL的建议和原则.
xiiSybaseETL相关文档有关详细信息,请参见以下文档:SybaseETL新增功能指南–介绍SybaseETL4.
9中的新增功能.
SybaseETL发行公告–包含未能及时写入手册的最新信息.
SybaseETL安装指南–描述SybaseETL的安装过程.
其它信息来源使用SybaseGettingStartedCD、SyBooksCD及SybaseProductManualsWeb站点可以了解有关产品的详细信息:GettingStartedCD包含PDF格式的发行公告和安装指南,也可能包含SyBooksCD中未收纳的其它文档或更新信息.
GettingStartedCD随软件一起提供.
要阅读或打印GettingStartedCD上的文档,需要使用AdobeAcrobatReader,该软件可以通过CD上提供的链接从AdobeWeb站点免费下载.
SyBooksCD含有产品手册,随软件提供.
基于Eclipse的SyBooks浏览器使您能够阅读以基于HTML的简单易用格式编写的手册.
有些文档可能是以PDF格式提供的,您可以通过SyBooksCD上的PDF目录访问这些文档.
要阅读或打印PDF文件,需要使用AdobeAcrobatReader.
有关安装和启动SyBooks的说明,请参见GettingStartedCD上的SyBooks安装指南或SyBooksCD上的README.
txt文件.
SybaseProductManualsWeb站点是SyBooksCD的联机版本,您可以使用标准Web浏览器进行访问.
除了产品手册之外,还可以找到"EBFs/Maintenance"、"TechnicalDocuments"、"CaseManagement"、"SolvedCases"、"Newsgroups"和"SybaseDeveloperNetwork"的链接.
若要访问SybaseProductManualsWeb站点,请转至ProductManuals位于http://www.
sybase.
com/support/manuals/.
Web上的Sybase认证SybaseWeb站点上的技术文档经常更新.
查找有关产品认证的最新信息1将Web浏览器定位到TechnicalDocuments位于http://www.
sybase.
com/support/techdocs/.
2单击"CertificationReport".
3在"CertificationReport"过滤器中选择相应的产品、平台和时间范围,然后单击"Go".
4单击"CertificationReport"标题以显示此报告.
关于本手册用户指南xiii查找有关组件认证的最新信息1将Web浏览器定位到AvailabilityandCertificationReports位于http://certification.
sybase.
com/.
2在"SearchbyBaseProduct"(按基本产品搜索)下面选择产品系统和产品,或在"SearchbyPlatform"(按平台搜索)下面选择平台和产品.
3选择"Search"以显示所选项目的可用性和认证报告.
创建SybaseWeb站点(包括支持页)的个性化视图设置MySybase配置文件.
MySybase是一项免费服务,它允许您创建SybaseWeb页的个性化视图.
1将Web浏览器定位到TechnicalDocuments位于http://www.
sybase.
com/support/techdocs/.
2单击"MySybase"并创建MySybase配置文件.
SybaseEBF和软件维护查找有关EBF和软件维护的最新信息1将Web浏览器定位到theSybaseSupportPage位于http://www.
sybase.
com/support.
2选择"EBFs/Maintenance".
如果出现提示,请输入您的MySybase用户名和口令.
3选择产品.
4指定时间范围并单击"Go".
随即显示一个EBF/维护版本的列表.
挂锁图标表示您没有注册为"TechnicalSupportContact",因此您没有某些EBF/维护版本的下载授权.
如果您尚未注册,但拥有Sybase代表提供的或通过支持合同获得的有效信息,请单击"EditRoles"将"TechnicalSupportContact"角色添加到MySybase配置文件中.
5单击"Info"图标显示"EBF/Maintenance"报告,或者单击产品说明下载软件.
xivSybaseETL约定本手册中使用的语法约定如下:易用性特点此文档提供专门针对易用性编写的HTML版本.
可以利用适应性技术(如屏幕阅读器)浏览HTML,也可以用屏幕放大器查看.
SybaseETL和HTML文档已经过了测试,符合美国政府"第508条易用性"的要求.
符合"第508节"的文档一般也符合非美国的易用性原则,如针对Web站点的WorldWideWeb协会(W3C)原则.
注意您可能需要对辅助工具进行配置以实现最优化.
某些屏幕阅读器按照大小写来辨别文本,例如将"ALLUPPERCASETEXT"看作首字母的缩写,而将"MixedCaseText"看作单词.
您可能会发现按语法约定来配置工具更为方便实用.
有关工具的信息,请查阅文档.
有关Sybase如何支持易用性的信息,请参见SybaseAccessibility位于http://www.
sybase.
com/accessibility.
SybaseAccessibility站点包括有关"第508节"和W3C标准的信息的链接.
如果需要帮助对于购买了支持合同的每项Sybase安装,均指定了一位或多位人员负责与Sybase技术支持部门联系.
如果您通过手册或联机帮助不能解决问题,请让指定的人员与您所在区域的Sybase技术支持部门或Sybase子公司联系.
键定义commands和methods命令名、命令选项名、实用程序名、实用程序标记、Java方法/类/软件包及其它关键字用小写Arial字体显示.
变量斜体表示:程序变量,例如myServer必须被替换的输入文本部分;例如:Server.
log文件名"File"|"Save"菜单名称和菜单项以纯文本格式显示.
竖线展示如何浏览菜单选项.
例如,"File"|"Save"表示从"File"菜单选择"Save".
package1"Monospace"字体表示:您在GUI界面、命令行中或作为程序文本输入的信息示例程序片段输出样本片段用户指南1第1章SybaseETL使用SybaseETL可以通过一组全面的转换函数从多个异构数据源提取数据,并将其装载到一个或多个数据目标.
它提供了可跨操作系统边界和计算机执行并行转换处理的伸缩式网格体系结构.
SybaseETL的功能包括:数据提取–从各种数据源提取数据.
数据转换–转换、清除、合并和拆分数据流.
数据装载–使用update、insert、delete或bulkcopy语句将数据装载到目标数据库.
SybaseETL体系结构SybaseETL包括SybaseETLDevelopment和SybaseETLServer.
SybaseETLDevelopment只能在Windows上使用,它是一种图形用户界面(GUI)工具,用于创建和设计数据转换项目和作业.
此工具提供了完整的模拟和调试环境,用于加速ETL转换流程的开发.
SybaseETLServer是一种可伸缩的分布式网格引擎,它通过使用SybaseETLDevelopment设计的转换流程连接到数据源,提取数据并将其装载到数据目标.
请参见第195页上的"SybaseETLServer".
SybaseETLDevelopment包含控制实际处理(例如连接到数据库和执行过程)的ETLDevelopmentServer.
若要并行执行作业和项目,您可以在网络中的不同操作系统上添加多个ETL服务器.
每个服务器均向所有其它对等服务器公开某些服务.
SybaseETL使用网格上的各种服务器并行执行多个项目和作业,从而改善了转换速度的可伸缩性.
主题页码SybaseETL体系结构1SybaseETL概念3SybaseETL体系结构2SybaseETLSybaseETLServer采用称为接口的方法或驱动程序连接目标数据库或源数据库.
在支持的接口中,用于连接到SybaseIQ和SybaseSQLAnywhere的SybaseSQLAnywhere11ODBC驱动程序会由SybaseETLDevelopment安装程序自动安装.
若要安装支持的其它接口,请参见相应的供应商文档.
注意SybaseSQLAnywhere11与SybaseETLServer打包在一起,而且必须手动安装.
您还可以使用命令行在所有受支持的平台上执行作业和项目.
请参见第199页上的"使用ETLServer执行项目和作业".
注意若要使用SybaseETLDevelopment并行执行项目和作业,请安装以单独可执行文件形式提供的SybaseETLServer.
仅当正在运行多台ETL服务器时,才并行执行项目和作业.
注册ETL服务器所有添加到网格中的ETL服务器都必须经过注册.
您可以使用SybaseETLDevelopment中提供的EngineManager注册ETL服务器.
请参见第71页上的"使用多个引擎可缩短作业执行时间".
监控ETL服务器您可以使用SybaseETLDevelopment中提供的EngineMonitor来监控网络中的服务器.
请参见第73页上的"引擎监视器".
您还可以使用Web浏览器来监控从命令行启动的远程项目和作业.
请参见第204页上的"使用Web浏览器监控项目和作业".
注意在本指南中,术语"网格引擎"和"ETL服务器"可交换使用.
第1章SybaseETL用户指南3第3页的图1-1提供了SybaseETL体系结构的图形表示形式.
图1-1:SybaseETL体系结构SybaseETL概念本节介绍SybaseETL的概念.
存储库存储库包含与SybaseETL对象、项目和作业相关的所有数据和信息.
在会话过程中,可同时访问多个存储库.
可以在存储库之间复制和传输项目,从而将产品知识库与开发知识库分隔开来.
请参见第25页上的"管理项目".
SybaseETL概念4SybaseETL存储库通常属于一个客户端,例如部门或公司.
多个客户端可以使用同一个存储库.
每个客户端可以支持任意数量的用户;每个用户均具有用于控制信息访问权限的用户名和口令.
注意请勿在存储库表中手动操作数据.
在存储库经过手动处理后,Sybase无法保证其功能性.
这也可能会使存储库无法使用,并使您做的工作丢失.
项目和作业项目是组件、链接和转换规则的集合.
每个项目均包含一个或多个用于在项目运行时按顺序模拟或执行的步骤.
组件会连接到各种数据源,然后从数据源读取数据,再基于转换规则进行数据转换.
项目由可以自由排列的各种组件组成.
可以在作业中按顺序或并行运行多个项目.
作业控制项目执行的顺序.
可以对作业进行安排和监控.
运行项目和作业可以使用模拟模式或执行模式运行项目.
这两种模式执行项目中所包含组件的所有功能,包括将数据以物理方式传输到数据目标(又称为数据接收器).
模拟模式允许您:运行带有未保存更改的项目.
分步监控和验证转换过程.
对于任何链接和任何包含组件之内数据流均可见.
也可以检查任何组件并修改映射和计算.
作出更改后,可以使用新的设置重新初始化该组件,然后转到下一个组件.
您不必重新启动模拟功能.
请参见第28页上的"交互式模拟项目".
注意如果您要以模拟模式运行项目且目标是测试转换规则,则可能需要使用测试数据目标.
第1章SybaseETL用户指南5执行模式允许您:运行已保存到存储库的项目和作业.
未保存的更改不会执行.
执行项目并将更改反映在数据接收器中.
您无法分步监控转换过程.
注意项目和作业可以从SybaseETLDevelopment执行,也可以作为预定任务执行.
请参见第53页上的"管理作业和预定任务".
自定义项目可以创建数据转换项目,而不使用编程代码或SQL语句.
例如,您可以执行以下操作:使用QueryDesigner在查询、查找定义、预处理和后处理SQL内部生成select语句.
使用组件之间链接的数据映射功能,在数据源和数据接收器之间映射属性.
通过所使用组件的内置CreateTableFromPort命令,创建临时表或持久性分阶段表,或者在目标数据库中创建表.
使用ContentExplorer浏览所连接的全部数据源的模式信息和数据内容.
使用XML通过SQL数据提供程序组件读取分层XML文档并自动生成关系结构.
在SybaseETLDevelopment内安排项目的执行并创建作业.
此外,如果对数据转换的要求较为复杂时,可以使用:经过手动优化的SQLselect语句,用于调整数据提取过程.
SQL语句,用于不同转换阶段应用数据操作命令.
JavaScript,用于编写过程、执行复杂计算或在操作系统环境中操作对象.
表达式中的间接机制,用于通过环境或用户变量动态控制项目.
SybaseETL概念6SybaseETL组件逐记录分步调试组件在模拟模式下,许多转换组件允许逐行操作当前的一组数据,并立即显示任何所应用转换的结果.
自适应端口结构和映射项目内的所有数据流经称为"输入端口"和"输出端口"的组件端口.
每个端口均具有数据流的结构.
可以更改其结构不直接取决于组件配置的所有组件的端口结构.
可以在组件内部立即引用添加到端口结构的属性.
连接组件时,SybaseETL将尝试在输出端口和输入端口之间创建标准映射.
可以在"Mapping"窗口中修改连接上的映射.
若要打开"Mapping"窗口,请右键单击连接链接,然后选择"Mapping".
请参见第29页上的"查看当前映射".
SQL语句由数据提供程序提供的大多数数据通过存储在Query属性中的SQL语句进行定义.
SybaseETL支持经过修改的SQL92标准.
可以手动将SQL语句从现有项目写入或复制到Query属性中.
如果不想涉及SQL92的细节,可使用QueryDesigner以图形方式设计查询并自动生成SQL语句.
JavaScriptETL支持用组件中所用表达式和过程的JavaScript语言来转换和操纵转换过程中的数据.
括在中括号中的JavaScript表达式还可以用在允许参数化配置的组件属性值中.
中括号表示法(SBN)是一种在SybaseETL环境中广泛适用的间接机制.
例如,可以在SQL语句和文件名规范中应用中括号表示法,以便在运行时以动态方式计算和分配值.
第1章SybaseETL用户指南7数据类型和数据格式在转换过程中将保留数据源的数据类型.
SybaseETL在内部区分字符串数据类型与数值数据类型.
数据提供程序或数据接收器的"标准化数据格式"选项会自动将数据转换为标准格式,然后从标准格式转换为目标数据库可以处理的格式.
使用不同数据库时,您不必手动转换各种日期和数字格式.
缺省情况下,已选中"标准化数据格式"选项.
但是,如果在日期或数字字段中出现问题,可以禁用此选项并手动转换数据.
请参见第19页上的"自定义首选项".
对Unicode的支持所有组件均可处理和支持Unicode和多字节数据.
可以在计算、脚本和过程中使用启用Unicode的转换函数.
SybaseETL对Unicode的支持级别如下:提取、转换和装载包含Unicode字符的数据在以下组件属性中可以使用Unicode字符:文件名或目录名元数据,例如表或属性名称连接设置,例如数据库、模式、用户或口令转换规则工具可通过SybaseETL工具访问所有已连接数据源中的结构和catalog信息.
可以浏览模式信息或数据,甚至使用这些工具创建新的数据库对象.
请参见第47页上的"高级概念和工具".
SybaseETL概念8SybaseETL用户指南9第2章快速入门启动SybaseETL1在Windows中,选择"开始"|"程序"|"Sybase"|"SybaseETLDevelopment4.
9"|"SybaseETLDevelopment".
登录窗口显示:Connection–RepositoryClient–transformerClientusername–TRANSFORMERPassword–transformer这些值在第一次登录时自动设置.
在后续登录时,可能需要选择或输入此信息.
单击"Logon".
主题页码启动SybaseETL9在演示存储库中设置新的用户帐户10使用SybaseETLDevelopment界面10自定义首选项19故障排除22在演示存储库中设置新的用户帐户10SybaseETL2在"Navigator"中,单击"Repository"|"TRANSFORMER.
transformer.
Repository"|"Projects"打开可用项目的列表.
注意项目列表显示与产品打包在一起的演示项目.
每个演示项目包含如何使用组件或实现方案的示例.
3双击现有项目名称打开项目,或右键单击"Projects",然后选择"New"创建新的项目.
在演示存储库中设置新的用户帐户1从SybaseETLDevelopment界面选择"File"|"OpenRepository".
2输入新的客户端用户名.
注意如果要访问演示项目和作业,请勿更改客户端名称.
3输入口令.
4选择"Registernewuser".
5选择"Showallobjects".
如果不选择此选项,将无法访问演示项目和作业.
6单击"Logon".
7重新输入口令,然后单击"OK".
使用SybaseETLDevelopment界面SybaseETLDevelopment界面由以下内容组成:"Design"窗口–用于基于转换规则创建项目和作业.
ComponentStore–用于查找项目的组件.
Navigator–用于查找项目、作业和模板.
还会显示最近访问的项目、作业和模板.
第2章快速入门用户指南11"Assistant"窗口–用于协助完成当前任务.
"Properties"窗口–用于设置组件的属性.
Navigator使用"Navigator"可执行以下操作:管理存储库导航和浏览存储库管理项目和作业执行项目和作业管理用户帐户使用SybaseETLDevelopment界面12SybaseETL管理存储库SybaseETL存储库是用于保存和维护项目、作业和会话参数所有相关数据的表的集合.
可以使用SybaseSQLAnywhere数据库作为SybaseETL存储库.
注意请勿在存储库表中手动操作数据;这样做可能使存储库无法使用,并且还可能会丢失数据.
在存储库经过手动处理后,Sybase无法保证其功能性.
若要访问项目或作业,请登录到相应的存储库.
若要打开存储库,必须至少分配一个客户端和一个客户端用户.
一个客户端可以有多个用户.
打开存储库1选择"File"|"OpenRepository".
或者,在"Navigator"中,右键单击"Repositories"并选择"OpenRepository".
2从"Connection"列表中选择存储库,然后单击"Logon".
关闭存储库连接1在"Navigator"中右键单击存储库名称,然后选择"CloseConnection".
2单击"Yes"确认要关闭连接及所有打开的项目和作业.
关闭存储库将结束当前连接到该存储库的所有用户会话.
关闭客户端用户会话1在"Navigator"中右键单击存储库名称,然后选择"CloseClient".
2单击"Yes"确认要关闭客户端及所有打开的项目和作业.
添加存储库1选择"File"|"OpenRepository",打开"RepositoryLogon"窗口.
2单击"Add".
3输入新的存储库连接的参数,然后单击"Save".
若要访问新的存储库,必须至少创建一个客户端和一个客户端用户定义.
第2章快速入门用户指南13创建客户端和客户端用户1在"RepositoryLogon"窗口的"Client"字段中,输入客户端的名称.
2输入客户端用户名.
名称必须为字母数字字符,最多可包含255个字符,并且不能以数字开头.
3输入口令.
4选择"RegisterNewUser".
5如果客户端用户有权查看客户端中的所有现有项目,请选择"ShowAllObjects".
6单击"Logon".
7重新输入口令,然后单击"OK".
注意也可以从"UseAccounts"窗口创建用户.
请参见第14页上的"创建用户".
编辑存储库1选择"File"|"OpenRepository".
2选择要修改的存储库,然后单击"Edit".
3作出更改,然后单击"Save".
删除存储库1从"Connection"列表中选择存储库,然后单击"Remove".
2单击"Yes"确认删除.
导航和浏览存储库在"Navigator"中,分层树列表表示:打开存储库与打开的存储库的客户端用户会话存储在存储库中的对象,如项目、作业和模板最近打开的项目、作业和模板存储库可以由多个客户端用户会话同时打开.
客户端用户是客户端的一部分.
客户端用户和客户端均在登录到存储库时进行注册.
使用SybaseETLDevelopment界面14SybaseETL以下示例显示树结构:存储库------.
.
------RecentRecentlyopenedprojectsRecentlyopenedjobsRecentlyopenedtemplates------ProjectsProject_1Project_2Project_N------JobsJob_1Job_2Job_M------TemplatesTemplate_1Template_L----.
.
----.
.
--管理项目和作业从"Navigator"可以管理项目和作业.
请参见第3章"项目和作业".
管理用户帐户从浏览器可以执行以下操作:创建用户删除用户更改口令更改可见性只有注册客户端用户才可以访问存储库.
可以在"RepositoryLogon"窗口或"UserAccounts"窗口中注册客户端用户.
创建用户1在"Navigator"中,右键单击存储库名称,然后选择"UserAccounts".
2单击"AddUser".
第2章快速入门用户指南153输入用户名.
用户名必须满足以下条件:仅包含字母数字字符以字母字符开头最多包含255个字符不能为空4输入口令.
5重新输入口令.
6选择"ShowAllObjects"以显示属于其它存储库用户的对象.
7单击"OK".
删除用户1在"Navigator"中,右键单击存储库名称,然后选择"UserAccounts".
2选择要删除的用户,然后单击"RemoveUser".
如果该用户已连接到存储库,请确认是否要删除该用户并关闭所有已打开的项目和作业.
单击"Yes".
3输入要删除的用户的口令,然后单击"OK".
更改口令1在"Navigator"中,右键单击存储库名称,然后选择"UserAccounts".
2选择要为其更改口令的用户.
3单击"ChangePassword".
4输入用户的现有口令和新口令.
重新输入新口令.
5单击"OK".
"Assistant"窗口"Assistant"窗口可帮助您完成当前任务.
使用SybaseETLDevelopment界面16SybaseETL"Properties"窗口使用"Properties"窗口可以执行以下操作:查看和编辑组件属性标识强制组件属性允许对组件属性进行动态评估加密组件属性将自定义属性添加到组件并编辑其值访问组件配置窗口为项目或作业启用事务性有关特定于组件的属性设置,请参见第5章"组件".
查看和编辑组件属性若要查看和编辑组件的属性和值,请在"Design"窗口中选择组件.
所选组件的所有属性将显示在"Properties"窗口中.
标识必要属性"Properties"窗口中以粗体文本显示的属性名称表示该属性为组件正常工作所必需.
所有其它属性均为可选属性,可用于调优和配置组件.
允许动态值选中"Evaluate"选项以允许在组件属性值中使用表达式.
通过"Evaluate"选项可以在运行时计算和评估动态属性设置,而不是在设计时分配静态值.
对于某些属性项,缺省情况下已选中"Evaluate"选项.
使用"Properties"窗口中的"Eval"复选框可以允许或禁止对属性进行评估.
一旦激活了"Evaluate"选项,就可以使用中括号表示法(SBN)在相应的字段中包括JavaScript表达式.
请参见第82页上的"对SBN表达式进行求值".
第2章快速入门用户指南17加密属性项目、作业数据及属性值均存储在SybaseETL存储库中.
SybaseETL存储库中的大多数记录都未经加密.
对于口令属性,缺省情况下已选中"Encrypt"选项.
若要对属性值进行加密,请在"Properties"窗口中右键单击所需的属性,然后选择"Encrypt".
或者,选择属性值旁的"Encrypt"复选框.
添加和编辑自定义属性使用"Properties"窗口可以添加或编辑自定义组件属性.
与其它属性一样,自定义属性也包含可在表达式或用户定义的过程中引用的变量.
请参见第83页上的"自定义属性".
访问组件配置窗口在"Properties"窗口中,单击"Property"图标打开所选组件的配置窗口.
注意某些组件没有配置窗口.
为项目和作业启用事务性在"Properties"窗口中,选择"PropagateRollback"以便为所生成的作业或项目启用事务性支持.
当该选项处于选中状态时,如果执行成功,则将在写入操作结束时提交数据;如果执行失败,则将对数据进行回滚.
如果该选项处于未选中状态,则在一个或多个组件失败时,项目不针对成功的组件强制回滚事务,而只针对失败的组件回滚事务.
作业也一样,如果"PropagateRollback"处于未选中状态,则在一个或多个项目失败时,不会针对成功的项目强制回滚事务,而只针对失败的项目回滚事务.
注意如果针对某个项目或作业选中了"PropagateRollback",而且有多个组件是同一个表的目标,则还需要针对所有这些组件选择"Sharedconnection"属性.
否则,ETL可能会停止响应.
使用SybaseETLDevelopment界面18SybaseETL"Design"窗口使用"Design"窗口可以执行以下操作:创建和修改项目及作业.
请参见第25页上的"项目和作业".
模拟和执行项目.
请参见第27页上的"模拟项目"和第34页上的"执行项目".
执行作业.
请参见第35页上的"管理作业".
将组件添加到"Design"窗口若要创建项目或作业,请添加并连接组件并设置其属性.
可以通过以下任一过程将组件添加到项目和作业中:在"ComponentStore"中选择组件并将其拖动到"Design"窗口.
在"ComponentStore"中双击组件.
在"ComponentStore"中,右键单击组件,然后选择"Add".
此外,还可以使用此过程将组件添加到项目中:在"Design"窗口中右键单击现有组件的端口,然后选择"AddComponent".
指向组件类型,然后选择要添加的组件.
该组件在现有组件之前还是之后添加取决于所选端口是输入端口还是输出端口.
从"Design"窗口删除组件1在"Design"窗口中,选择要删除的组件.
2右键单击并选择"Delete".
处理常规命令1在"Design"窗口中,右键单击任何位置以打开常规项目菜单.
此菜单显示常规命令,例如"Close"和"Print".
2若要针对某个组件执行操作,请右键单击该组件,然后选择要执行的操作.
第2章快速入门用户指南19ComponentStore"ComponentStore"由多个部分组成,各部分按常规目的对组件进行分组.
将组件从"ComponentStore"添加到项目或作业:将组件拖动到"Design"窗口右键单击组件,然后选择"Add"双击组件自定义首选项在SybaseETLDevelopment中使用"Preferences"窗口可以自定义以下各组的设置:WorkbenchAppearanceDataViewerQueryDesigner引擎PerformanceLogging自定义首选项1从主SybaseETLDevelopment界面选择"File"|"Preferences".
2选择"Appearance"并设置以下选项:Localeforuserinterfacedisplay–选择环境的区域设置语言:_de(德语)、_en_US(美国英语),或者_en_GB(英国英语).
缺省值为_en_US.
Showassistantforcreatingprojects–查看指导您完成项目的助手,并显示有关打开项目的当前状态的信息.
Defaultfontfordisplayingtext–选择用于在"TextDataProvider"和"TextDataSink"组件窗口中显示文本文件内容的字体.
在使用非西欧字符集(如Unicode)时,此设置十分有用.
缺省字体为"Monospaced".
用于显示文本的建议字体为"Dialog"或"Monospaced".
自定义首选项20SybaseETLDefaultfontfordisplayingdata–选择用于在整个应用程序中显示端口数据的字体.
在使用非西欧字符集(如Unicode)时,此设置十分有用.
如果是第一次安装SybaseETLDevelopment,缺省字体为"Dialog".
如果先前已安装此版本的SybaseETLDevelopment,则字体将设置为先前定义的值.
Sybase建议您将字体设置为"Dialog".
注意为使用"Defaultfontfordisplayingtext"和"Defaultfontfordisplayingdata"选项,Sybase建议您安装针对东亚语言的文件.
在Windows"控制面板"中,单击"区域和语言选项",选择"语言"选项卡,然后选择"为东亚语言安装文件".
启用此选项将安装显示Unicode字符所需的字体.
Createanewprojectonstartup–在启动SybaseETL时自动创建新的项目.
Createlinksautomaticallywhencomponentsareadded–在现有组件和添加到项目的新组件之间自动创建链接.
Defaultactionondouble-clickingaconnection–指定在模拟过程中双击连接时是打开"Mapping"窗口(缺省设置)还是"Preview"窗口.
"Mapping"窗口显示映射信息,"Preview"窗口提供连接数据的预览.
Displayqualifiedtransformationobjects–在"Navigator"中的对象名称前加上所有者名称作为前缀.
例如,如果选择了此选项,则项目名称将以如下形式出现在"Navigator"中:TRANSFORMER.
DemoCharacterMapper其中,TRANSFORMER是创建项目的客户端用户的名称.
Useuniqueobjectnames–对存储库连接强制唯一的项目和作业名称.
Showpasswordincomponenttooltips–在组件工具提示中显示用于登录到基础数据库的口令.
缺省情况下,口令在工具提示中显示为一系列星号.
Useenhancedcoloraccessibility–更改组件端口的色彩以加强对色盲用户的支持.
选择此选项会将端口的缺省色彩从黄色更改为蓝色,从而使色盲用户可以区分不同的端口状态.
Useverticalcomponentlayout–从上到下以垂直对齐方式显示项目和作业,而不是缺省情况下的从左到右垂直对齐.
第2章快速入门用户指南21Showinformationdialogs–如果希望执行操作且不被信息提示中断,请取消选择此选项.
Numberofrecentlyopenedprojects,jobs,andtemplatestodisplay–指定要在"Navigator"和"File"菜单中查看的最近访问的项目、作业和模板的数目.
Openthelastrepositoryautomatically–在重新启动时自动连接到上次登录的存储库.
Saverepositoryclientpassword–在登录到存储库之后保存客户端口令.
如果选择此选项,您不必在下次登录时提供口令,该口令将在"Repository"窗口的"Password"字段中自动提供.
3选择"DataViewer"并指定导出数据字段的最大长度.
缺省值为255.
长度超过在此指定的值的数据字段将在导出文件中截断.
4选择"QueryDesigner"并设置以下选项:Enabledeletefunctionalityofdatabaseobjects–在"QueryDesigner"中右键单击表并选择"TruncateObject"时,删除所选表的所有记录.
DefaultnumberofrecordstoretrievefromtheQueryDesigner–指定将由QueryDesigner检索的缺省数据记录数.
缺省值为25.
Createjoinsautomatically–在表或视图内使用的相同属性名称之间自动创建连接.
Usebracketswhencreatingjoins–在生成的查询中用括号自动将连接子句括起.
例如,select语句将以以下形式显示:select*FROMSALES(())Defaultnumberofrecentlyaccessedtablesandviewstodisplay–指定希望QueryDesigner在"Recent"选项卡中显示的最近访问的表和视图的数量.
缺省值为25.
5选择"Engine"并设置以下选项:Startlocalengineduringapplicationstartup–在启动SybaseETL时启动本地引擎.
Intervalbetweenenginemonitorupdates(sec)–指定在EngineMonitor的更新之间等待的秒数.
缺省值为5秒.
Rateofsimulation(msec)–通过设置"Simulationtracedelay"控制模拟速率.
"Simulationtracedelay"选项接受10到9999毫秒之间的值.
缺省值为250毫秒.
故障排除22SybaseETLGridenginepingtimeout(sec)–指定在启动或重新启动本地网格引擎之前允许访问网格引擎的秒数.
缺省值为60秒.
Intervalbetweenprogressmonitorupdates(sec)–指定在ProgressMonitor更新之间等待作业执行的秒数.
缺省值为5秒.
Allowselectionoftheexecutionengine–指定将用于项目执行的网格引擎.
Executionengineserver–指定主网格引擎服务器的IP地址.
Executionengineport–指定主网格引擎服务器的端口地址.
6选择"PerformanceLogging",并指定记录性能数据的详细信息级别:0–性能数据不会写入到存储库.
1–性能数据写入到存储库.
该值为缺省值.
7单击"Save".
为使某些更改生效,系统可能会提示您重新启动SybaseETL.
如果在得到提示时选择不重新启动,所做的更改将在下一次启动SybaseETL时生效.
故障排除SybaseETL安装程序将创建一组初始数据源.
如果这些存储库数据源由于任何原因而丢失,则必须将其恢复,否则SybaseETL无法打开.
恢复DemoRepository的初始ODBC数据源组:1配置ODBC用户数据源:a选择"开始"|"设置"|"控制面板"|"管理工具"|"数据源(ODBC)".
b单击"添加".
c选择"SQLAnywhere11".
单击"完成".
d输入"DEMO_Repository"作为ODBC数据源名称.
e单击"登录"选项卡,并输入"dba"作为用户ID,输入"sql"作为口令.
f单击"数据库"选项卡,然后在"起始行"字段中输入"C:\ProgramFiles\Sybase\ETLDevelop49\dbeng11.
exe".
这是缺省安装位置.
第2章快速入门用户指南23g在"数据库文件"字段中,输入"C:\ProgramFiles\Sybase\ETLDevelop49\Demodata\demo_rep.
db".
h返回到"ODBC"选项卡,并单击"TestConnection"检验连接.
2在"RepositoryLogon"窗口中设置存储库连接:a选择"File"|"OpenRepository".
b从"Connection"列表中选择"Repository",然后选择:"Edit"或者"Add",然后输入连接名称.
c从"Interface"列表选择"ODBC".
d在"Host"列表中选择"DEMO_Repository".
e单击"Save".
3配置DemoRepository中的项目所需的其它ODBC用户数据源:驱动程序–SQLAnywhere11名称–ETLDEMO_DWH;数据库–demo_dwh.
db名称–ETLDEMO_GER;数据库–demo_ger.
db名称–ETLDEMO_US;数据库–demo_us.
db这些用户数据源的数据库文件也位于安装目录的Demodata文件夹中.
故障排除24SybaseETL用户指南25第3章项目和作业管理项目项目由组件和链接组成,链接通过组件端口连接组件.
与项目有关的基本操作包括创建、删除、重命名和保存等操作,复杂操作包括模拟等操作.
SybaseETL项目以一个或多个源组件开始并以一个或多个目标组件结束.
以下是SybaseETL组件:"数据提供程序"组件通常与"转换"组件、"处理"组件或"数据接收器"组件连接.
"转换"组件和"处理"组件具有输入与输出端口,并具有任何其它类型的相邻组件.
如果"转换"组件允许通过多个输入数据流,则需要多个始发源组件.
如果"转换"组件具有多个数据流输出,您可将每个数据流与组件连接.
创建项目1在"Navigator"中,右键单击项目并选择"New"|"Project".
或者,选择"File"|"New"|"Project".
2将项目组件从"ComponentStore"拖至"Design"窗口.
主题页码管理项目25管理作业35使用模板创建项目和作业38创建和模拟示例项目43管理项目26SybaseETL修改项目1在"Navigator"中,双击要修改的项目.
2进行更改并保存项目.
为项目解锁另一用户客户端锁定的项目将以只读模式打开.
若要使项目能够进行读取或写入,请在打开锁定的项目时显示的窗口中单击"Unlock"和"Open".
复制项目1双击要复制的项目以在"Design"窗口中打开该项目.
2在"Navigator"中,右键单击该项目并选择"SaveAs".
或者,选择"File"|"SaveAs".
如果使用多个存储库,请选择目标存储库.
3为新项目输入名称.
将创建现有项目的副本,原始项目保持不变,而且不会存储对原始项目的引用.
传输项目如果您正使用多个存储库,则可将完整的项目从一个存储库复制至另一个存储库且保持对原始项目的引用.
例如,您可能希望将项目从developmentrepository移至测试或产品知识库.
通过存储对原始项目的引用,传输将在原始项目下次启动时识别该项目并选择性地替换与传入对象相关的一切.
1在"Navigator"中,右键单击要传输的项目并选择"Transfer".
或者,选择"File"|"Transfer".
2选择希望传输其中项目的存储库.
注意此传输选项将复制项目定义和执行属性.
相关数据(如参数集)不会进行传输.
删除项目1在"Navigator"中,右键单击项目并选择"Delete".
2单击"Yes"确认删除.
第3章项目和作业用户指南27重命名项目1在"Navigator"中,右键单击项目并选择"Rename".
2输入项目的新名称并单击"OK".
重置执行属性重置增量装载的装载选项:1在"Navigator"中,右键单击项目并选择"ResetExecutionProperties".
2单击"Yes"以确认您希望重置执行属性.
LoadIndexValue(DBIndexLoad组件)的当前值已重置.
模拟项目对项目进行模拟可逐步监控并验证转换过程.
与执行项目不同,利用模拟操作可以:运行带有未保存更改的项目.
在转换过程的任何阶段查看数据.
在模拟的最后几步中,数据会写入数据接收器中或者进行回滚,具体取决于您进行的选择.
使用DataCalculator等多种转换组件可在模拟期间更改转换规则和示例值,并且可验证所有潜在内容的规则库.
注意只有正确初始化所有组件后,才可模拟项目.
模拟的基本功能包括:启动模拟逐步执行单个组件以预定义的速度跟踪多个组件查看连接链接上或组件中的数据流修改并重新初始化组件以继续模拟数据流提交或回滚数据在更详细的级别上,您可以:查看连接链接上的数据内容查看组件内的输入数据与输出数据管理项目28SybaseETL修改属性或计算,以便更改转换规则和示例值以验证规则库修改计算或属性后再次逐步执行组件执行"假设"情况采用多步执行项目交互式模拟项目若要以交互方式运行项目,请选择"Run"|"Trace".
您可在任意时刻停止模拟,并选择"Run"|"Step"或"Run"|"StepThrough"来手动逐步执行其余项目组件.
交互式模拟项目1若要启动模拟,请单击工具栏上的"Start":将初始化项目的所有组件.
将验证项目中的所有连接.
将执行项目中的所有预编译的SQL语句.
检索并高速缓存所有静态查找组件的数据.
查询表中数据在模拟期间的任何更改不会在模拟过程中反映出来.
2选择某个组件并单击工具栏上的"Step"图标以执行该组件.
"逐步执行组件"意味着执行或处理单个组件.
在一个步骤中处理的数据记录是当前填充该组件输入端口的记录.
如果多次逐步执行组件且期间没有执行其它组件,则已收到或已转发的记录数保持不变.
可在项目视图中从组件内部以及外部逐步执行多个组件.
3查看连接链接上或组件中的数据流.
若要在整个转换过程中查看数据,请检查组件或组件端口之间的链接.
DataCalculator和DataSplitter等其它组件包含内置预览功能.
若要查看连接链接上的数据,请右键单击并选择"Preview".
若要查看当前端口的数据,请右键单击该端口并选择"Preview".
注意如果没有已处理的记录或没有可用的模拟数据,将禁用"Preview"选项.
第3章项目和作业用户指南29若要从组件内部查看数据,双击该组件或单击"Property"窗口中的"Rule"图标.
使用此选项,从DataCalculator或DataSplitter等组件内部查看转换规则的影响.
4修改并初始化组件.
修改某个组件后,可重新初始化该组件以继续模拟数据流.
您无需重新启动对当前项目的完整模拟.
a双击该组件以便在"Properties"窗口中修改其属性.
b保存更改.
c右键单击组件,然后选择"Initialize".
5在处理完所有数据之后,系统会提示您选择以下选项之一:ExecutePost-Processingasforsuccessfulexecution–提交由事务组件执行的所有任务并将项目重置到其初始状态.
ExecutePost-Processingasforfailedexecution–回滚由事务组件执行的所有任务并将项目重置到其初始状态.
单击"Yes"确认要重置交互式跟踪功能.
这将清除所有的端口缓冲区、释放临时表并关闭所有的数据库连接和临时文件.
如果单击"No",则将保留所有已打开的数据库连接和端口缓冲区.
您可以检查、重新配置然后重新单步执行各个组件.
若要重置跟踪功能以提交或回滚事务组件的数据,请在工具栏上单击"Reset",或者选择"Run"|"Reset".
选择"Yes"确认.
设置跟踪延迟通过设置模拟交互式跟踪延迟选项可控制模拟速率.
1选择"File"|"Preferences"|"Engine".
2修改模拟字段的"Rate"的值.
可输入介于10至9999毫秒之间的值.
缺省值是250毫秒.
查看当前映射"MappingDefinition"窗口显示相邻输入结构与输出结构的属性之间的当前映射.
1右键单击连接链接,然后选择"Mapping".
2在"MappingDefinition"窗口中,选择:"Displaystructure"以查看连接端口和其当前映射的所有属性.
管理项目30SybaseETL"Displaystructureandvalues"以查看当前记录的字段和值.
该视图显示连接至该链接的端口的当前内容.
如果该端口未含任何数据,则此窗口中仅显示该端口的结构.
通过逐步执行项目直至达到该端口,便可在端口中填充数据.
应用自动映射若要创建映射,从"Mapping"菜单上选择以下预定义映射序列之一:CreatemappingbyOrder–按顺序映射输入结构和输出结构的端口属性.
如果两端的属性数目不同,则说明部分端口属性未映射.
CreatemappingbyName–按名称映射输入和输出结构的端口属性.
CreatemappingbyNameCaseSensitive–按照其区分大小写的名称映射输入结构和输出结构的端口属性.
CreatemappingbyPrefix–按照名称(忽略指定的前缀)映射输入结构和输出结构的端口属性.
CreatemappingbyBestMatch–映射可能相似的输入结构和输出结构的端口属性.
应用手动映射若要手动创建单个映射,请选择连接点并将其拖至端口属性的连接点.
若要更改当前映射,请选择连接点上的映射行并将其拖至未映射的端口属性.
若要删除单个映射,请右键单击该映射并选择"Delete".
若要删除链接的所有映射,请从"Mapping"菜单上选择"RemoveAll".
查看已映射的属性缺省情况下,"MappingDefinition"窗口显示输入结构和输出结构的所有端口属性.
若仅查看已映射的属性,请单击工具栏上"Displayonlymappedattributes"图标.
启用同步属性滚动若要在输入结构和输出结构的属性之间启用同步滚动,请在工具栏上单击"Synchronizeattributescrolling"图标.
第3章项目和作业用户指南31管理端口属性您可在"StructureViewer"窗口中添加并删除端口属性,或者修改设置或现有属性.
将属性添加至端口结构1在"Design"窗口中右键单击端口,然后选择"EditStructure".
2在"StructureViewer"窗口中选择"Actions"|"Add",或右键单击属性并选择"Add".
3输入属性的名称.
端口属性的名称必须以字母字符开头,且只能包含字母数字字符.
该名称不能是保留的JavaScript关键字.
请参见第57页上的"变量".
选择"PopulateAttribute"将属性添加到多个端口结构.
此时会将新属性添加到参与所选连接的所有端口结构并自动进行映射.
单击"OK".
4指定其它详细信息.
从端口结构中删除属性1在"Design"窗口中右键单击端口,然后选择"EditStructure".
2在"StructureViewer"窗口中选择"Actions"|"Remove",或右键单击属性并选择"Remove".
修改端口属性1在"Design"窗口中右键单击端口,然后选择"EditStructure".
2在"StructureViewer"窗口中更改属性设置,然后单击"Save".
请参见第84页上的"管理端口结构".
修改数据类型当修改记录结构的数据类型时,您可修改转换期间SybaseETL用于记录结构的内部逻辑表示.
此操作不会更改源表或目标表的数据结构定义.
确保最终"数据接收器"的数据结构与正在生成的内容兼容.
查看模拟流在启动模拟之后,可通过以下方式使模拟流可见:绿色虚线框,指示活动组件并且随着每一步都会从一个组件移至下一个组件.
链接上显示记录的数目,它会随该框移动.
管理项目32SybaseETL每一步中正在处理的记录数取决于带"ReadBlockSize"属性的上一组件的"ReadBlockSize"的当前值.
当执行模拟时,选择一个较小的记录数比较适合.
执行项目时,大数值的"ReadBlockSize"可显著改善性能.
逐步执行当前组件选定组件启动模拟时,要执行的第一个组件会用绿色虚线框进行指示.
如果逐步执行项目而未进行修改,则该框会在组件间移动,并会显示成功或失败图标直至模拟结束.
您可以选择除当前组件外的其它组件以检查或更改其属性.
选定的组件由绿色实线框进行指示.
当单击工具栏上的"Step"或选择"Run"|"Step"时,下一步将执行当前组件.
若要检查或更改与当前组件不同的组件,请单击该组件.
绿色实线框会突出显示选定组件.
完成更改后,可从选定组件或当前组件恢复模拟:若要从选定组件恢复模拟,右键单击并选择"Step".
若要从当前组件恢复模拟,单击工具栏上的"Step".
注意如果右键单击未处理的组件并选择"Initialize"和"Step",将会初始化和逐步执行该组件,并且会突出显示将要执行的下一组件.
前移和后移组件由框指示的模拟视觉流在大多数项目中是向前移动的;框从一个组件移至下一个组件.
然而,项目模拟流并不只朝一个方向移动;流的方向由项目中所使用的组件决定.
转移DataCalculator与CharacterMapper等组件,接收多个记录,将转换应用于这些记录,并转移记录.
单个步骤中处理的记录数仅由上一组件中接收到的记录数决定.
其它组件将覆盖上一"ReadBlockSize"设置.
Staging组件旨在处理数据流的整个结果集,如"数据源"组件的查询所定义.
将整个结果集传递至输入端口之前,组件将不处理和转移任何数据记录.
Staging组件使用自己的"ReadBlockSize"属性重新调整下一步将转移的记录数.
有关模拟期间每一组件的行为的详细说明,请参见第5章"组件".
第3章项目和作业用户指南33从多个位置预览数据右键单击任何连接链接、端口或组件,并选择"Preview"以打开"ContentBrowser"窗口,该窗口会显示当前在选定位置上可用的数据.
注意如果没有已处理的记录或没有可用的模拟数据,"Preview"选项将不可用.
"ContentBrowser"窗口包括允许您同时从多个位置显示多个预览的选项卡.
您可能会发现预览组件的输入端口和输出端口的内容将非常有用.
若要将显示的数据保存到定义文件,请单击工具栏上的"Export"数据图标.
为导出数据指定选项.
模拟期间部分执行或初始化在对单个组件进行修改后重新启动整个模拟可能非常耗时,特别是如果某个含有大量的组件的项目中包含大量输入记录时更是如此.
若要多步执行项目以达到您感兴趣的点,请选择组件并选择"Run"|"Stepthrough"或"Run"|"Start".
模拟到某一组件若要从项目中间的某一位置的组件开始验证当前项目,请选择该组件,然后选择"Run"|"StartThrough".
模拟会启动当前项目、处理当前组件与选定组件之间的所有组件并处理选定组件.
"Read/WriteBlockSize"的影响作为"ReadBlockSize"输入的数字可定义单个模拟步骤中组件所提取的记录数.
设置"WriteBlockSize"以定义要写入的记录数.
大部分"数据提供程序"组件具有"ReadBlockSize"属性.
可以为大多数"数据接收器"组件自定义"WriteBlockSize".
可以为"转换"组件(如"暂存"组件)自定义读取和写入值.
注意"BlockSize"属性是在项目模拟以及项目和作业执行期间进行评估的.
较小的数字可能非常适合模拟时使用,但会降低执行速度.
在模拟中,"BlockSize"被限制为32K.
管理项目34SybaseETL控制多个数据流大多数项目都由通过链接连接的组件的单个流组成.
但是,还可以设置具有多个未连接数据流的单个项目.
您无法预测流的处理顺序.
如果您使用多个数据流,Sybase建议您为每个数据流设计一个项目,以便项目中的所有组件相互连接.
这会允许您通过连接项目来控制数据流以形成作业处理流.
执行项目使用以下这些方法之一,可以在缺省网格引擎中执行项目:对于当前在"Design"窗口中打开的项目,请选择"Run"|"Execute"或单击工具栏上的"Execute"图标.
执行会影响模拟的状态.
如果尝试执行未保存的项目,系统将提示您保存该项目.
如果保存项目,该项目的所有模拟数据将丢失并且该项目将会执行.
注意执行前,您必须保存项目中的更改,因为可从存储库中读取该项目定义.
如果尚未保存更改,执行将不会开始.
在"Navigator"中,选择要执行的项目.
右键单击并选择"ExecuteProject".
"ExecutionMonitor"将会显示.
请参见第73页上的"ExecutionMonitor".
安排项目若要安排项目,请选择"Tools"|"RuntimeManager".
使用"RuntimeManager"创建、编辑、删除、执行和终止任务.
请参见第53页上的"管理作业和预定任务".
第3章项目和作业用户指南35管理作业使用作业为一个或多个项目设置功能强大的控制流.
您可以安排运行SybaseETL作业,而无需任何用户交互.
根据作业中项目的成功或失败,您可以控制作业执行.
作业组件执行单个项目的作业至少包括:"Start"组件"Project"组件"Finish"组件您可以扩展作业以包含多个:按顺序或并行顺序排列的项目同步程序"Finish"和"Error"组件"Start"组件后始终跟着一个或多个"Project"组件.
创建作业1在"Navigator"中,右键单击"Jobs"并选择"New"|"Job".
可用的作业组件会显示在"ComponentStore"中.
2将"Start"组件从"ComponentStore"拖动到"Design"窗口.
3添加"Project"组件并将其与"Start"组件连接.
4添加"Finish"组件并将其与"Project"组件连接.
5双击"Project"组件.
6选择希望包含在此作业中的项目.
单击"Save".
现在作业就可以在SybaseETLDevelopment中执行或作为预定任务执行.
从"Navigator"中,您可以显示和访问作业中包含的项目.
修改作业1在"Navigator"中,双击作业名称,或右键单击该作业并选择"Open".
2修改作业并保存更改.
管理作业36SybaseETL复制作业1双击要复制的作业以在"Design"窗口中打开.
2在"Navigator"中,右键单击作业并选择"SaveAs".
或者,选择"File"|"SaveAs".
如果使用多个存储库,请选择目标存储库.
3提供该作业的名称.
现有作业的副本已创建,原始作业保持不变,而且不会存储对原始作业的引用.
注意将作业复制至其它存储库并不会复制该作业中包含的项目.
您必须为作业中的所有项目和多项目组件从新存储库中选择项目.
传输作业如果您正使用多个存储库,则可将所包含的完整作业和项目从一个存储库复制至另一个存储库且保持对原始对象的引用.
例如,您可能希望将作业从开发知识库移至测试或生产存储库.
通过存储对原始作业的引用,传输将在原始作业下次启动时识别该项目并选择性地替换与传入对象相关的一切.
1在"Navigator"中,右键单击要传输的作业并选择"Transfer".
或者,选择"File"|"Transfer".
2选择要将作业传输到的存储库.
将作业和所有包含的项目从一个存储库复制至另一个存储库,但引用原始对象.
注意传输仅复制作业定义.
相关数据(如参数集或执行属性)不会进行传输.
删除作业1在"Navigator"中,右键单击作业并选择"Delete".
2单击"Delete".
缺省情况下,仅删除选定的作业.
若要删除作业和所有包含的项目,请选择"DeleteIncludedProjects"选项.
注意在删除作业中使用的项目前,请确保该项目未用于其它作业中.
这一检查不会自动进行.
当前打开以供设计使用的项目和被任何用户锁定的项目将不受影响.
第3章项目和作业用户指南37重命名作业1在"Navigator"中,右键单击作业.
2选择"Rename".
控制作业执行可通过以下操作控制作业执行:使用synchronizer组件,您可根据项目的成功或失败转移作业执行.
忽略每个项目的错误.
请参见第189页上的"作业组件".
执行作业您可直接从SybaseETLDevelopment或以特定时间间隔将作业作为操作系统"任务管理器"的预定任务来执行.
若要执行"Design"窗口中当前打开的作业,请选择"Run"|"Execute".
若要直接从"Navigator"执行作业,请右键单击该作业并选择"JobExecute".
若要安排作业,选择"Tools"|"RuntimeManager".
请参见第53页上的"管理作业和预定任务".
安排作业若要安排作业,选择"Tools"|"RuntimeManager".
使用"RuntimeManager"创建、编辑、删除、执行和终止任务.
请参见第53页上的"管理作业和预定任务".
使用模板创建项目和作业38SybaseETL使用模板创建项目和作业使用模板自动创建项目和作业.
使用模板助手构建迁移模板利用模板助手可创建新模板,或使用现有模板将数据从一个数据库迁移至另一个数据库.
构建迁移模板1选择"File"|"New"|"Template".
或者,右键单击"Navigator"中的"Templates"并选择"New"|"Template".
2输入迁移详细信息:提供该模板的名称.
该名称用于模板对象,并进一步限定用于生成的转换对象.
迁移类型应当是"DBtoIQ".
若要使用多个引擎来执行,请选择"Allowexecutiononmultipleengines".
如果要使用多个写入器将数据装载到IQ数据库中,请选择"UseIQMultiplex".
如果要将多个表迁移到IQ数据库,请选择该选项.
注意若要支持Multiplex执行,必须将SybaseSQLServer11ODBC驱动程序安装在ETLDevelopment和ETLServer所在的同一计算机上.
若要允许将远程主机上文件中的数据批量装载到IQ数据库中,请选择"UseIQClientSideLoad".
若要以排它模式锁定目标表并防止并发事务更新该表,请选择择"UseIQLockTable".
如果选择该选项,其它任何事务均不能对被锁定的表执行查询或任何更新.
"UseIQLockTable"还会对SybaseIQ中装载有相同表的多个项目进行排队.
如果选择该选项,还必须指定项目在获取锁之前应等待的最大阻塞时间.
第3章项目和作业用户指南39若要为所生成的作业或项目启用事务性,请选择"Transactional".
如果执行成功,则将在写入操作结束时提交数据;如果执行失败,则将对数据进行回滚.
注意如果"Transactional"选项处于选中状态,则将创建所有支持事务性的数据源和数据接收器组件,并启用它们的"Transactional"属性.
单击"Next".
3输入源数据库的连接详细信息并选择要传输的表.
请参见第87页上的"数据库连接设置".
注意数据库连接属性与DB组件的连接属性相同.
单击"Logon"可查看指定数据库的可用表的列表.
缺省情况下,已选择所有表进行传输.
取消选择不希望传输的表.
您还可选择一个或多个表的行,右键单击并选择"Exclude".
要将表纳入传输范围,请右键单击并选择"Transfer".
或者,可以单击以下图标之一:Excludeallobjectsfromtransfer(用于排除所有表).
Includeallobjectsintransfer(用于包括所有表).
若要查看有关表的其它信息,选择表的行,右键单击并选择:Browse–查看表数据.
Count–查看选定表的记录数.
若要查看所有表的记录数,请单击"CountAll".
单击"Next".
4输入目标数据库的数据库连接属性.
请参见第87页上的"数据库连接设置".
单击"Logon"可查看可用表的列表.
若要查看表数据或选定表的记录数,请右键单击"Browse"或"Count".
若要查看所有表的记录数,请单击"CountAll".
单击"Next".
5指定要传输的表的传输设置.
使用模板创建项目和作业40SybaseETLa选择"Preserveschema/owner"以保留源表的模式或所有者信息.
注意目标数据库中必须存在同一模式或所有者.
b输入阶段属性.
在"Stage"和"StageServer"字段中,指定"DBBulkLoadIQ"组件的装载阶段属性的路径.
如果"UsePipes"处于选中状态,则将自动设置路径.
如果未选择"UsePipes",则应手动提供以路径分隔符结尾的值.
例如,C:\ETLStage\.
请参见第155页上的"DBBulkLoadSybaseIQ属性列表".
注意如果在第2步中在迁移详细信息窗口中选择了"UseIQClientSideLoad","UsePipes"选项和"Stageserver"字段将不可用.
c选择源属性.
缺省情况下,会选择表的所有属性以供传输.
若要更改属性选择,单击"Columns"字段中的图标.
在"SelectAttribute"窗口中,取消选择要从传输中排除的属性.
还可以选择一个或多个属性行,右键单击,然后选择"Exclude".
d选择目标表.
假定源表的名称与目标表的名称相同.
若要使用不同的名称,请将新名称输入到"Destination"字段中或选择一个现有表.
e选择其它选项以对每个表执行适当的操作:数据模型选项–传输启动前,验证目标表是否存在.
数据模型选项可帮助您设置目标数据模型.
它们不影响执行,但会影响通过模板创建的数据模型.
若要根据选定的源属性创建新的目标表,请选择"CreateTable"或右键单击该选项并选择"Activate".
若要重新创建现有的表,请选择"DropTable".
执行选项–这些选项将影响项目级的执行.
选择"Truncate"以在装载前从目标表中删除所有记录.
此选项对应于目标组件的TruncateTable属性.
第3章项目和作业用户指南41关键项目的故障将导致作业停止执行并发出故障信号.
"Critical"选项和"IgnoreErrors"选项对应于多个项目作业组件的属性.
"IgnoreErrors"设置并不影响通过此模板生成的项目.
6选择要对已收集的数据执行的任务.
注意除保存模板外,还可以通过在"Navigator"中右键单击存储的模板来执行这里介绍的所有任务.
Savetemplate–将模板存储在存储库中.
通过存储可将已收集的数据重新用于类似作业.
Buildprojectsandjobs–为每个源表创建一个项目以及一个可控制所有项目执行的迁移作业.
Createthedestinationdatamodel–根据所输入的数据模型选项,设置目标数据模型.
单击"Advanced"以输入SQL命令,该命令将在创建目标表之前执行.
Executejob–仅当选择了"Buildprojectsandjobs"时才可用.
如果选择此选项,处理迁移模板数据后将执行生成的作业.
注意至少选择"Savetemplate"或"BuildProjectsandjobs"选项可确保所收集的数据不会丢失.
单击"Finish".
注意在可以执行生成的作业之前,注册引擎或打开该作业和停用"MultiEngineExecution"选项.
请参见第71页上的"使用多个引擎可缩短作业执行时间".
处理数据时,可查看当前状态和进度.
管理迁移模板创建模板1在"Navigator"中,右键单击"Templates".
2选择"New"|"Template".
模板助手将指导您配置迁移模板.
使用模板创建项目和作业42SybaseETL修改模板1在"Navigator"中,双击模板,或右键单击模板并选择"Open".
2修改并保存模板.
复制模板1在"Navigator"中,右键单击模板.
2选择"Copy".
为新模板输入名称.
还可将模板复制到不同的存储库中.
删除模板1在"Navigator"中,右键单击模板.
2选择"Delete".
注意删除模板不影响基于该模板的作业和项目.
重命名模板1在"Navigator"中,右键单击模板并选择"Rename".
2输入模板的新名称.
通过模板构建作业基于存储模板创建迁移作业以及所有相关的项目:在"Navigator"中,右键单击模板并选择"Build".
若要强制使用唯一名称,创建时间戳将会添加到所有对象名称中.
通过模板创建数据模型根据与模板一起存储的数据模型选项来设置目标数据模型:在"Navigator"中,右键单击模板并选择"CreateDataModel".
第3章项目和作业用户指南43创建和模拟示例项目项目通常包含一个或多个:用于提供项目数据流所需数据的数据提供程序用于转换或重新映射字段值的数据转换程序用于将转换后的值写入目标的数据接收器注意您可在缺省repository中"DemoGettingStarted"项目内查看本部分的结果.
有关组件、属性和功能的详细信息,请参见第5章"组件".
添加数据提供程序使用以下其中一种方法可将"DBDataProviderFullLoad"添加到项目:将组件从"ComponentStore"的"Source"选项卡拖动到"Design"窗口.
在ComponentStore中,右键单击要添加的组件,然后选择"Add".
在ComponentStore中,双击要添加的组件.
当将组件添加到"Design"窗口时,组件的缺省配置将会显示.
注意所有配置窗口中以粗体显示的属性均为必要属性.
配置数据提供程序1从"Interface"下拉列表中选择"ODBC".
有关不同接口类型的信息,请参见第87页上的"数据库连接设置".
2从"HostName"下拉列表中选择"ETLDEMO_US".
确认初始组件设置后,该设置将显示在"Properties"窗口中.
3若要定义要从数据源中检索的信息,请单击"Query"字段中的"Query"图标.
创建和模拟示例项目44SybaseETL4单击"QueryDesigner"图标以生成查询.
注意还可以手动输入SQL查询.
通过"QueryDesigner"窗口的左窗格可导航已连接数据库的表目录.
5若要添加一个或多个表,请将表名拖动到"Design"窗口,或右键单击表名并选择"AddObjecttoQuery".
6单击并将PRODUCTS表拖动到"Design"窗口.
7单击"Save"以关闭"QueryDesigner"并返回至"Query"窗口.
将自动生成select查询.
8单击"ExecutetheQuery"图标可运行或测试该查询.
9单击"Save"以关闭"Query"窗口.
注意成功配置某个组件后,与其关联的端口颜色将由红色或黄色更改为绿色.
添加数据接收器使用以下其中一种方法将"DBDataSinkInsert"添加到项目:将组件从"ComponentStore"的"Destination"选项卡拖动到"Design"窗口.
在ComponentStore中,右键单击要添加的组件,然后选择"Add".
在ComponentStore中,双击要添加的组件.
将组件添加到"Design"窗口后,该组件将立即显示其缺省配置.
注意所有配置窗口中以粗体显示的属性均为必要属性.
配置数据接收器1从"Interface"下拉列表中选择"ODBC".
有关不同接口类型的信息,请参见第87页上的"数据库连接设置".
2从"HostName"下拉列表中选择"ETLDEMO_DWH".
3在"DestinationTable"字段中输入"PRODUCTS".
或者,单击"Destination"表图标并选择"PRODUCTS".
第3章项目和作业用户指南454单击"Finish"以确认设置.
现在项目包含两个组件.
如果"File"|"Preference"窗口中"Createautomaticlinkswhencomponentsareadded"处于选中状态,将会自动创建组件之间的链接.
如果没有自动创建行,请单击输出端口并将其拖动到数据接收器的输入端口以创建行.
"DBDataProviderFullLoad"组件的输出端口和"DBDataSinkInsert"组件的输入端口均显示为绿色.
这指明两个组件均已配置.
在"DBDataSinkInsert"组件的"Property"窗口中,您可检查并设置选定组件的所有属性.
检查并定义属性映射1右键单击组件之间的链接.
链接的颜色更改为绿色.
2选择"Mapping".
将自动创建数据源和目标源之间的映射.
若要更改映射,请选择连接行并将其附加到另一连接点.
注意仅可映射到未分配的目标连接点.
如果所有的目标连接点均已分配,请通过删除当前链接至它的映射行来取消分配的连接点.
选择映射行并按Delete键,或右键单击并选择"Delete".
添加DataCalculator1在"ComponentStore"中,单击"Transform"选项卡.
2选择并将DataCalculatorJavascript组件拖放到连接现有组件的链接上.
链接的颜色更改为蓝色.
释放"DataCalculator"组件后:它与左右侧的组件链接.
"DataCalculator"窗口将会显示.
"DataCalculator"窗口具有"Tabular"和"Graph"视图:使用"Tabular"视图输入转换规则.
使用"Graph"视图可直观定义输入和输出端口之间的映射顺序.
3单击"Graph"选项卡.
"IN"和"OUT"代表端口属性的当前结构.
4单击"Yes"可按顺序分配缺省映射.
创建和模拟示例项目46SybaseETL5单击"Tabular"选项卡可返回值表式视图.
6将PR_NAME属性的所有传入数据更改为大写字母:uUpper(IN.
PR_NAME)'OUT.
PR_NAME7在"IN.
PR_NAME"属性的"TransformationRule"列中输入uUpper(IN.
PR_NAME).
IN.
PR_NAME值会转移到OUT.
PR_NAME属性.
8单击"Save"以确认设置.
项目中所有端口的绿色指示所有组件均已成功配置.
9选择"File"|"Save".
启动模拟1若要初始化所有组件,请单击工具栏上的"Start"图标.
2单击"Step"以从组件到组件逐步执行项目.
在模拟期间的任何时刻,都可通过右键单击链接并选择"Preview"来预览当前数据集.
例如,执行第一步时,数据记录将从源组件转移至数据计算器.
链接上的数字指示传输的记录数.
注意如果没有已处理的记录或没有可用的模拟数据,"Preview"选项将不可用.
3在处理完所有数据之后,请选择以下选项之一:Executepost-processingasforsuccessfulexecution–提交由事务组件执行的所有任务并将项目重置到其初始状态.
Executepost-processingasforfailedexecution–回滚由事务组件执行的所有任务并将项目重置到其初始状态.
单击"Yes"确认要重置交互式跟踪功能.
这将清除所有的端口缓冲区、释放临时表并关闭所有的数据库连接和临时文件.
如果单击"No",则将保留所有已打开的数据库连接和端口缓冲区.
您可以检查、重新配置然后重新单步执行各个组件.
用户指南47第4章高级概念和工具QueryDesigner使用QueryDesigner可以执行以下操作:浏览当前项目所连接的任何数据库的表目录使用图形用户界面创建SQL查询查看所生成的SQL语句对数据库执行SQL查询浏览所选表或视图中的数据在模式中创建表主题页码QueryDesigner47ContentExplorer51FileLogInspector51管理作业和预定任务53自定义SQL和转换规则56执行SQL查询和命令66参数集67使用多个引擎可缩短作业执行时间71引擎监视器73ExecutionMonitor73分析性能数据74为运行时事件配置警报78QueryDesigner48SybaseETL删除表中的所有记录注意若要删除表中的所有记录,请在"File"|"Preference"窗口中选择"Enabledeletefunctionalityofdatabaseobjects".
请参见第19页上的"自定义首选项".
计算表或视图中记录的数量打开QueryDesigner此部分使用DemoRepository中的"DemoGettingStarted"项目在QueryDesigner中创建查询.
要打开QueryDesigner,请执行以下操作:1在"Navigator"中,双击"DemoGettingStarted"项目以在"Design"窗口中将其打开.
2双击"DBDataProviderFullLoad"组件.
或者,选择该组件以在"Properties"窗口中显示其属性.
3单击"Query"图标.
4单击"QueryDesigner"图标.
"QueryDesigner"界面"QueryDesigner"界面包括以下项:"QueryDefinition"窗格–包括"Design"窗口,该窗口用于自动生成您所处理的记录所特有的select语句.
Navigator–在"Model"选项卡上显示所有表和视图,并在"Recent"选项卡上显示最近使用的表或视图.
您可以设置要在"File"|"Preferences"窗口中的"Recent"选项卡下查看的表或视图的缺省数量.
请参见第19页上的"自定义首选项".
属性选项卡(Select、Join、Where、Sort、Group)和"GeneratedQuery"选项卡–利用这些选项卡,可以查看属性详细信息,以及在查询创建过程中的任意时刻查看生成的查询.
第4章高级概念和工具用户指南49创建查询本节使用DemoRepository中的"DemoGettingStarted"项目创建查询.
创建简单查询要生成用于检索表中所有属性的简单查询,请使用PRODUCTS表.
1在"Navigator"中选择"Model"选项卡,然后单击表或视图的名称.
若要搜索特定表名或视图名,请按Ctrl+F.
2将所选对象拖动到"Design"窗口中.
3要查看生成的查询的结果,请选择"View"|"GeneratedQuery"或选择"Ge-neratedQuery"选项卡.
使用多个表创建查询要生成用于连接两个表并检索两个表中信息的查询,请使用PRODUCTS和SALES表.
1将PRODUCTS表从"Navigator"拖动到"Design"窗口中.
2将SALES表从"Navigator"拖动到"Design"窗口中.
3通过链接两个表的PR_ID字段来为这两个表建立连接.
如果希望QueryDesigner在表或视图中的同名属性间自动创建连接,请执行以下操作:a从SybaseETLDevelopment主窗口中选择"File"|"Preferences".
b选择"Workbench"|"QueryDesigner",然后选择"Createjoinsautomatically".
请参见第19页上的"自定义首选项".
4要查看连接属性详细信息,请在"QueryDesigner"窗口中单击"Join"选项卡.
修改连接的缺省设置两个表之间的连接用一条直线(用于将连接字段连接起来)表示.
直线上标有连接运算符(缺省值为EquiJoin).
1右键单击连接两个连接字段的直线.
2选择"Modify".
3选择连接类型.
QueryDesigner50SybaseETL修改连接的排序顺序1在"Join"选项卡中,右键单击一行,然后选择:MovetostartMoveupMovedownMovetoend2要在任意时刻还原到连接的缺省状态,请右键单击一行,然后选择"Sortjoinstodefaultorder".
向select子句中添加一个或多个属性1将PRODUCTS和SALES表拖动到"Design"窗口中(如果它们尚且不在该窗口中).
2要添加一个属性,请右键单击要添加的属性,然后选择"AddItemstoSelec-tion".
要添加多个属性,请按住Ctrl键,同时选择要添加的属性.
或者,单击"QueryDefinition"窗格中的"PRODUCTS"和"SALES"选项卡,然后选择要添加到select子句中的属性.
要搜索属性,请单击"Search"图标并提供搜索条件.
您可以使用星号(*)作为通配符来搜索任意数量的未知字符.
例如:如果属性的数据类型为integer,则可以使用下列搜索条件之一:int、int*、i*ger如果属性名中包含"PROD"并且以"CD"结尾,则可以使用以下搜索条件:*PROD*CD将选定表中的所有属性添加到select子句中1在"Query"选项卡中,单击表的标头.
2单击右键,然后选择"AddItemstoSelect".
查看属性详细信息和生成的查询1要查看QueryDesigner生成的查询,请选择"View"|"GeneratedQuery",或者选择"GeneratedQuery"选项卡.
2单击相应的选项卡以查看属性详细信息.
第4章高级概念和工具用户指南51向select属性添加函数1在"Select"选项卡中,右键单击要向其添加函数的属性.
2选择要添加的函数.
注意若要强制实施用来查看数据和端口结构的可靠而又妥当的属性名称,请为这些函数所应用到的所有属性定义别名.
请参见为所选属性添加别名和第300页上的"输入查询时使用列的别名".
为所选属性添加别名在"Select"选项卡上的"Alias"列中,输入一个名称,用以实施DataViewer以及相关端口结构中所使用的输出列名.
ContentExplorer使用ContentExplorer浏览所连接的全部数据源的模式信息和数据内容.
使用ContentExplorer生成即席查询,这些查询无法保存到文件或存储库中.
若要保存所生成的SQL语句,请从"GeneratedQuery"窗口中选择并复制生成的查询.
使用下列方法之一打开ContentExplorer:选择"Tools"|"ContentExplorer".
"ChooseDataSource"窗口中显示当前连接到数据源的所有组件.
当前连接的数据库的列表中的名称是用户定义的名称与组件类型的通用名称的组合.
选择一个组件,然后单击"Start"以打开"ContentExplorer".
右键单击数据库组件,然后选择"ContentExplorer".
FileLogInspector使用FileLogInspector可以查看有关项目和作业执行的信息以及致命错误,并且可以查看系统日志.
日志文件位于安装目录的\log子目录中.
1选择"Tools"|"FileLogInspector".
FileLogInspector52SybaseETL2单击要查看的日志文件信息.
您可能会看到下列日志文件中的一个或全部日志文件:alert.
log–捕获所触发警报的历史记录.
提供警报详细信息(如警报名称、事件类型、日期和时间以及警报消息).
execution.
log–捕获有关作业和项目执行的信息.
system.
log–捕获有关系统活动、操作事件和异常事件的信息.
您可以查看system.
log文件中的错误代码,以便确定使用SybaseETL时遇到的错误的原因和可能的解决方案.
system.
log文件中可能显示以下错误代码:写入system.
log的数据的详细信息级别取决于所设置的跟踪级别.
要设置跟踪级别,请执行以下操作:选择"Tools"|"EnableSystemTrace".
在JavaScript过程中使用uTracelevel(n)函数.
使用uTracelevel(n)(其中n的值为0到5),可以设置组件中的跟踪级别.
通过在安装文件夹的etc子目录中的default.
ini文件中修改下面一行来指定跟踪级别:Tracelevel=value错误代码类型说明0信息作业或项目执行成功100或110错误ETL引擎初始化错误101错误无效许可证错误1100错误ETL异常失败,包括错误的命令行用法1103或1104错误因未指定异常而失败10001错误无法检索存储库中的信息,包括作业、项目和参数集10005错误作业执行失败10006错误项目执行失败10007错误项目执行在回滚状态下结束10101错误连接存储数据库失败第4章高级概念和工具用户指南53其中value是要设置的跟踪级别.
您必须重新启动SybaseETL,更改才能生效.
注意Sybase建议您将跟踪级别设置为0或5.
3(可选)单击工具栏上的"Truncatelog"图标以截断日志.
选择"Yes"确认.
4(可选)–单击工具栏上的"Selectrowscontainingastringorregularexpres-sion"图标以找到特定日志文件.
注意LogFileInspector仅显示最新1MB的日志文件.
若要查看大型日志文件的早期记录,请使用文本编辑器打开相应文件.
管理作业和预定任务使用RuntimeManager可以管理项目和作业以及查看当前预定任务的概述.
使用RuntimeManager调度向导可以管理预订任务.
RuntimeManager基于ETLScheduler,ETLScheduler使您能够使用所选引擎创建、编辑、删除、执行、列出、导入和终止预订任务.
从"ScheduleService"下拉列表中选择要用于管理预定任务的引擎.
此时将显示在该引擎上安排的所有任务的列表.
注意可以仅在与ETLDevelopment相同的子网中所运行的网格引擎上安排任务.
若要在运行于多个子网中的网格引擎上安排任务,请在运行这些引擎的子网中运行ETLDevelopment的实例.
创建新日程表1选择"Tools"|"RuntimeManager".
2选择"Actions"|"Create".
或者,单击工具栏上的"CreateaNewSchedule"图标.
3选择要执行的项目或作业.
如果需要的话,请选择一个参数集,或者指定进行增量装载所必需的"RepCDCInstanceName".
单击"Next".
管理作业和预定任务54SybaseETL4输入日程表详细信息:输入日程表名称,该名称必须保持唯一.
提供日程表的开始日期和时间.
单击"RepeatTask"指定您希望任务重复的频率.
单击"Advanced"指定:Executenewtaskconcurrently(缺省设置)–允许同时运行任务的多个实例.
Executenewtasksequentially–等待当前进程完成,然后再执行新进程.
Donotexecutenewtask–继续处理当前的任务并忽略新任务的启动请求.
Canceltherunningtaskbeforeexecutingnewtask–停止当前的进程并启动新进程.
"Stopthetaskafter"选项会将运行时间超过指定持续时间的任务终止.
缺省情况下,此选项处于禁用状态.
提供结束日期,在这之后日程表将被停用.
指定您希望该任务执行的频率:Daily–按指定的天数间隔执行.
Weekly–按指定的星期间隔执行.
Monthly–在每个选定月的特定几天的指定时间执行.
指定每月的哪几天,并选择适当的日历月.
Once–只在指定的日期和时间执行一次.
Atenginestartup–每次启动引擎时都执行.
单击"Next".
5如果成功创建了日程表,则会显示一则消息.
单击"Finish".
新日程表将与现有日程表(如果有)一起显示在RuntimeManager中.
编辑日程表1选择要编辑的预定项目或作业.
2单击工具栏上的"EditaSchedule"图标,或者选择"Actions"|"Edit".
或者,可以双击要修改的预定项目或作业.
第4章高级概念和工具用户指南55执行日程表1选择要执行的预定项目或作业.
2单击工具栏上的"ExecuteaSchedule"图标,或者选择"Actions"|"Execute".
注意预定任务使用已在"Preference"窗口中设置的相同性能记录级别.
若要使用其它日志级别,请在创建或编辑任务之前更改"PerformanceLogging"选项,然后在保存任务之后重置该选项.
请参见第74页上的"收集性能数据".
删除日程表1选择要删除的预定项目或作业.
2单击工具栏上的"DeleteaSchedule"图标,或者选择"Actions"|"Delete".
设置日程表的刷新选项1选择"Actions"|"EnableAuto-Refresh"定期更新日程表信息.
缺省情况下,此选项处于未选中状态.
注意如果"Auto-Refresh"处于未启用状态,所显示的信息可能是旧信息.
您可以手动刷新日程表以查看任务的当前状态.
选择"Action"|"RefreshInterval"可以定义您希望日程表更新的间隔.
刷新间隔值不应当小于2秒.
2单击"OK".
将任务从Windows计划程序导入到ETLScheduler可以将以前在Windows计划程序中安排的任务导入到ETLScheduler中.
注意只能导入在SybaseETL4.
8或更低版本中创建的预定任务.
1从工具栏上的"ScheduleService"下拉列表中,选择要将Windows预定任务导入其中的目标引擎.
2选择"Actions"|"Import".
3选择要从中导入预定任务的源引擎,然后单击"OK".
所选引擎上的Windows预定任务将导入到ETLScheduler中.
自定义SQL和转换规则56SybaseETL4除非ETLScheduler上存在同名的任务,否则将使用原来的名称导入任务.
如果当前名称已经存在,则必须提供新名称.
注意预定任务的名称必须唯一.
5单击"Yes"删除Windows日程表.
如果您希望在删除源引擎中的任务之前先将它们导入到任何其它引擎中,或者您希望在以后使用Windows任务计划程序手动删除任务,请单击"No".
6此时会看到一则显示导入结果的消息.
单击"OK".
终止日程表1选择要终止的预定项目或作业.
2单击工具栏上的"TerminateaRunningSchedule"图标,或者选择"Actions"|"Terminate".
自定义SQL和转换规则设置项目或作业时,您可以自定义以下项:用于设置源组件的SQL查询用于处理任务的SQL命令用于处理转换过程的表达式、条件和过程SQL命令的格式取决于连接到组件的数据库系统.
但是,SybaseETL(JavaScript)支持的转换语言的格式不会改变,无论在项目中使用的源系统或目标系统是什么都是如此.
您可以在中括号表示法(SBN)中添加JavaScript表达式,这会大大减少您的自定义工作量.
SBN表达式可以是组件属性(如果为特定属性激活"Evaluate"选项)、SQL语句或任何处理命令的一部分.
SBN表达式在运行时计算,这一点与在设计时定义的常量值不同.
请参见第82页上的"对SBN表达式进行求值".
第4章高级概念和工具用户指南57表达式和过程表达式是可以计算单个值的标识符和运算符的组合.
单个表达式可以是变量、常量或标量函数.
您可以使用运算符将两个或多个简单表达式连接成一个复杂表达式.
下面列出了一些表达式示例:'Miller'uConcat("Time","goesby")(uMid(SA_ORDERDATE,1,10)>='1998-01-01')过程是指包括表达式、语句和控制结构的编程单位.
您可以使用JavaScript编写过程,例如:if(IN.
PR_PRICEIN.
Price-returnsTRUE若要强制使用数值比较,请使用:IN.
Margin*1>IN.
Price*1-returnsFALSE请勿使用以下任何保留的JavaScript关键字作为端口和组件变量名称:函数SybaseETL包括一组完整的函数和运算符,这些函数和运算符支持Unicode字符集.
您可以通过前缀u识别SybaseETL函数,例如,uConcat().
保留的JavaScript关键字breakcasecatchcontinuedefaultdeletedoelsefinallyforfunctionifininstanceofnewreturnswitchthisthrowtrytypeofvarvoidwhilewithabstractbooleanbytecharclassconstdebuggerdoubleenumexportextendsfinalfloatgotoimplementsimportintinterfacelongnativepackageprivateprotectedpublicshortstaticsupersynchronizedthrowstransientvolatileconstexport第4章高级概念和工具用户指南59中括号表示法大多数组件属性可以包含SBN表达式,SybaseETLServer在将这些表达式用于项目配置、模拟或执行之前会对这些表达式进行计算.
SBN表达式是一个用中括号[.
.
]括起来的JavaScript表达式.
多个SBN表达式可以在单个字符串值中使用.
您可以在类似如下的组件属性中使用SBN表达式:SQL查询处理SQL语句转换规则文件名路径定义URL示例文字是指用引号括起的字符串.
如果在文字中使用SBN,则会首先计算SBN.
'ArrivalDate:[uDate('now','localtime')]'以下表达式指定TextDataProvider中文件的路径:[uSystemFolder('APPDEMODATA')]\PRODUCTS.
TXT注意在组件的"Property"窗口中,"Eval"列指出是否计算输入的值以解析SBN表达式.
对于许多items属性来说,"Eval"列都是可选的.
要切换"Eval"复选框,请右键单击属性项,然后选择"Evaluate".
使用SQL属性几乎所有具有数据库连接的组件都支持在转换的不同阶段中执行自定义SQL语句.
SQL属性有查询和脚本两种基本类型.
对于这两种类型:允许使用能够由所连接的数据库系统接受的SQL.
使用SQL92可以在不更改语句的情况下切换到其它数据库系统.
允许使用SBN表达式.
请参见第59页上的"中括号表示法".
自定义SQL和转换规则60SybaseETL查询SQL查询用于所有提取数据的组件(主要是数据提供程序和暂存组件).
查询结果集的各列定义相应的输出端口结构.
SQL查询结果集必须至少包含一列.
SQL查询的示例:SELECTcu_no,cu_nameFROMcustomers脚本SQL脚本由一个或多个不返回任何数据的SQL语句组成.
例如,有些属性允许您在初始化(预处理)组件期间或者在完成(后处理)项目之后执行SQL语句.
一些注意事项:SQL语句在执行后不得返回输出.
您可以使用分号作为语句分隔符,在SQL属性中输入多个SQL语句.
在SQL属性中使用存储过程时,请在存储过程名称前面包括call关键字.
例如,callmy_proc(),其中my_proc()是存储过程的名称.
SQL脚本的示例:DELETEFROMproducts;UPDATEcustomersSETcu_desc='valid';使用"SQLProperty"窗口若要修改组件的SQL属性值,请在"Properties"窗口中单击各自的"Edit"图标.
在"SQLProperty"窗口中,可以:手动输入语句使用QueryDesigner.
请参见第47页上的"QueryDesigner".
查找数据库模式.
运行查询或脚本.
保存SQL属性值.
第4章高级概念和工具用户指南61输入SQL语句可以在文本字段中输入SQL语句.
创建查询可以打开QueryDesigner以图形方式构造查询.
请参见第47页上的"QueryDesigner".
在QueryDesigner中,选择"View"|"GeneratedQuery"或者单击"GeneratedQuery"选项卡,复制所生成查询的一部分或全部,然后将其粘贴到"SQLProperty"窗口的"Query"文本字段中.
注意对于查询属性,QueryDesigner提供了一个"Save"按钮.
如果单击该按钮,"Query"文本字段的整个内容将替换为所生成的查询.
查找数据库模式可以通过单击"DatabaseLookup"图标,从相关的数据库模式中选择用于语句的表和属性.
在"DatabaseLookup"窗口中,选择要在语句中使用的表和属性,然后单击"OK".
执行SQL语句并查看查询结果集若要执行当前的SQL语句,请单击"Execute"图标.
对于查询属性,系统会提示您指定要查看的记录数.
结果将显示在DataViewer中.
使用SBN表达式本节说明如何在SQL属性中使用SBN表达式.
尽管以下示例针对的是查询,但所描述的技术对于这两种类型均适用.
假定要用SELECT语句检索特定的客户记录,可以包括该记录的常量客户编号:select*FROMCUSTOMERSWHERECU_NO='12345678'通过SBN,可以将常量值CU_NO分配给自定义组件属性,从而提高灵活性.
请参见第83页上的"自定义属性".
假定为属性CustNo分配了值"12345678",则包含动态表达式的select语句如下所示:select*FROMCUSTOMERSWHERECU_NO='[REF.
CustNo]'自定义SQL和转换规则62SybaseETL您可以在SBN表达式中使用任何SybaseETL函数.
以下语句对CustNo1使用值"1234",对CustNo2使用值"5678",从而返回相同的记录:select*FROMCUSTOMERSWHERECU_NO='[uConcat(REF.
CustNo1,REF.
CustNo2)]'使用JavaScript编辑器和调试程序JavaScript是面象对象的脚本语言,它嵌入在其它产品和应用程序中.
使用JavaScript可以处理对象,以便对其进行编程控制.
JavaScript功能通过网格函数得到增强,这些函数可提高语言的灵活性.
使用JavaScript编辑器和调试程序,可以交互方式编辑、调试和执行JavaScript代码.
JavaScript编辑器和调试程序主要用于(但并不仅限于)对传入数据设置转换规则.
在JavaScript编辑器和调试程序内,您可以使用一个输入记录执行和测试脚本.
JavaScript调试器和调试程序提供了:彩色编码语法,用于提高可读性监视列表,用于在运行或单步执行代码时控制变量和属性的赋值由用户定义的多个断点,用于在行的任意位置停止代码执行用户定义的执行点,用于任意选择代码的执行位置逐语句模式,用于逐行执行代码调试期间单步跳过JavaScript表达式的计算验证代码执行结果启动JavaScript编辑器和调试程序1双击"DataCalculatorJavaScript"组件,或者在"Property"窗口中单击"Rule"图标.
2在"TransformationRule"列中选择一行,然后单击"Edit"图标.
第4章高级概念和工具用户指南63"JavaScriptEditorandDebugger"窗口包括以下项:Navigator–由"Variables"选项卡和"JavaScript"选项卡组成.
"Variable"选项卡包括输入端口和输出端口变量、临时变量和预定义的变量.
"JavaScript"选项卡中包括可在过程中应用的所有函数、命令和系统变量.
"Edit/Debug"窗格–可用于编辑实际代码.
窗口底部显示下列选项卡:Tasks–在编译完过程之后显示验证结果.
WatchList–在调试过程中单步执行代码时显示选定的变量及其值.
InputRecords–显示当前输入记录的内容.
若要对输入记录和输出记录进行同步,请单击工具栏上的"Startdebugging"图标.
OutputRecord–显示当前输出记录的内容.
Expression–在输入JavaScript表达式并单击工具栏上的"Evaluate"后显示表达式的结果.
注意不在处于活动状态的调试会话中时,"Evaluate"按钮处于禁用状态.
编辑模式和调试模式当启动JavaScript编辑器和调试程序时,其将在编辑模式下打开.
若要切换到调试模式,请选择"Debug"|"Start".
编辑区域的背景颜色为深灰色表示调试模式.
若要切换到编辑模式,请单击工具栏上的"Stopdebuggingandstartediting"图标.
编辑和调试JavaScript要验证JavaScript代码,请选择"Debug"|"Start".
验证结果显示在"Tasks"选项卡上.
JavaScript编辑器和调试程序提供了可有效跟踪脚本执行的功能.
您可以逐行单步执行代码,也可以从一个断点到另一个断点单步执行代码.
您可以随时检查变量的当前值.
注意注释行以两条正斜杠//开头.
自定义SQL和转换规则64SybaseETL单步执行代码JavaScript编辑器和调试程序可在未输入数据的情况下在组件的输入端口运行.
但是,为了实现最佳效果,请在使用调试功能之前用数据填充输入端口.
1验证脚本或切换到调试模式.
绿色箭头(最初指向行1)表示单步执行时的执行进度.
2确保"Task"选项卡中的结果消息为"Successfulcompilation".
3要移动到下一行,请单击工具栏上的"Step"图标.
您可以在单步执行的任意时刻检查变量的名称和当前值.
为此,请在"Navigator"中选择变量,然后右键单击该变量.
添加和删除断点最好不要逐行单步执行过程,应在选定行中添加断点.
1单击要在其中设置或删除断点的行.
2右键单击,然后选择"Add/Removebreakpoint".
步进到断点1针对每一步单击工具栏上的"Go"图标.
2单击最后一个断点上的"Go"图标以执行脚本的其余部分.
监控监视列表中的值您可以在执行代码期间使用监视列表监控变量值的变化情况.
单步执行代码时,您可以看到监视列表中的一个或多个变量所发生的任何变化.
向监视列表中添加变量1右键单击变量.
2选择"AddtoWatchlist".
从监视列表中删除变量1在"WatchList"选项卡中,选择变量行,然后右键单击该变量行.
2选择"RemoveWatchVariable".
第4章高级概念和工具用户指南65JavaScript的特有功能若要中断JavaScript执行,请在编辑器内部的工具栏上单击"Cancelarunningscript"图标.
创建用户定义的错误若要强制执行错误并中断项目的执行,请使用throw("xx")函数.
例如,若要在产品名称(PR_NAME)的长度超过20个字符时停止执行,请使用:if(uLength(IN.
PR_NAME)>20)(throw("Productnameexceedsmaximumlength");)创建用户定义的函数您可以定义脚本内的函数并创建嵌套函数.
例如,以下脚本会使得变量b的值为6:vara=2;varb=20;b=IncA(a);//endfunctionIncA(a){varb=3;a=IncB(b)+a++;returna;functionIncB(b){b=b+1;returnb;}}转换数据类型SybaseETL中的所有变量均以字符串形式表示.
如果您使用数值,则可能会引起意外行为.
您可以使用函数parseInt()和parseFloat()将字符串转换为整数或浮点数,例如:vara="123";varb="22";a>bwillreturnFALSEwhileparseInt(a)>parseInt(b)returnsTRUE.
执行SQL查询和命令66SybaseETL包括文件若要将外部文件包括在脚本中,请使用uScriptLoad("filename")函数.
外部文件可以包含任何有效的JavaScript构造(包括函数),因而允许使用可重用类型的代码,例如:uScriptLoad("C:\scripts\myfunc.
js");vara=11;varb=2;varc=0;b=gcd(a,b);//gcdfunctiondefinedinC:\scripts\myfunc.
js执行SQL查询和命令您可以为与源组件、查找组件、Staging组件和目标组件关联的数据库输入并执行SQL查询或一系列SQL命令.
执行SQL查询1在"Design"窗口中,右键单击组件,并选择"ExecuteSQLQuery".
2在"Query"字段中输入select语句.
您可以使用所连接的数据库的任何有效SQL符号来构建查询.
要使用可用数据库模式中的表和视图创建查询,请单击"DatabaseLookup"图标.
3单击"Executethequery"图标.
成功执行后,结果会显示在"DataViewer"窗口中.
执行SQL命令1在"Design"窗口中,右键单击组件,并选择"ExecuteSQLCommands".
2在"Command"字段中输入SQL命令.
要使用可用数据库模式中的表和视图创建命令,请单击"DatabaseLookup"图标.
3单击"Executethecommand"图标.
成功执行SQL命令后,会显示一则消息.
注意执行一系列命令不会返回一个结果集.
第4章高级概念和工具用户指南67参数集执行项目时,将使用存储在存储库中的值初始化所有组件属性.
通过参数集,可以覆盖这些值中的一部分.
例如,当将项目或作业从开发转至生产时,您可以使用参数集更改数据库连接设置.
若要使用参数集,请执行以下操作:选择要作为参数使用的组件属性.
存储参数值集.
执行时分配存储参数集.
选择组件属性作为执行参数1在"Properties"窗口中,右键单击要作为执行参数使用的所有组件属性,然后选择"External".
2右键单击要通过参数集使用SBN表达式分配动态值的所有组件属性,然后选择"Evaluate".
包括所有非打印值,如Tab、CRLF等.
3保存该项目.
注意至少为所有提供项目参数的组件赋予唯一名称.
您可能还想更改属性的提示符和说明.
有关如何修改属性的提示符和说明的信息,请参见第83页上的"自定义属性".
管理参数集您可以将参数集分配给项目和作业.
要打开"ParameterSet"窗口,请在"Design"窗口或"Navigator"中右键单击项目或作业,然后选择"ParameterSets".
"ParameterSet"窗口显示选定项目或作业的已定义参数集列表.
注意有一些属性的值(在项目设计中显示)可能与您必须在参数集中提供的值不同.
有关这些属性及其值的列表,请参见第69页上的"特殊属性值".
参数集68SybaseETL创建参数集1在"ParameterSet"窗口中,单击"Set"|"New".
此窗口在底部显示已定义的参数及其当前值的列表.
2使用要添加的值覆盖当前值.
3单击"Save".
4输入参数集的名称.
5单击"OK".
修改参数集1在"ParameterSet"窗口中选择参数集.
2单击"Set"|"Open".
3使用新值覆盖当前参数.
4单击"Save".
删除参数集1在"ParameterSet"窗口中选择参数集.
2单击"Set"|"Delete".
复制参数集1在"ParameterSet"窗口中选择参数集.
2单击"Set"|"Copy".
3命名新参数集.
4单击"OK".
使用参数集执行项目或作业1在"Navigator"中,右键单击项目或作业.
2选择"ExecuteProjectwithParameterSet"或"JobExecutewithParameterSet".
3从列表中选择一个参数集或添加用于单次执行的参数值.
4单击"Execute".
请参见第73页上的"ExecutionMonitor".
注意如果没有可用的存储参数集,则窗口会自动在编辑模式下打开.
第4章高级概念和工具用户指南69分配参数值若要选择一个参数,请单击相应的列表行.
若要选择多个参数,请在相应的行上拖动鼠标,或按住Ctrl并单击以选择其它行.
选择参数后,请执行以下操作:输入新值.
旧值将被覆盖.
直接在"Value"单元格中编辑现有值,然后单击"Save".
将同一值分配给多个属性因为参数集基于组件属性,所以您可能需要将同一值分配给多个属性.
1选择要分配其值的参数.
2输入新值,并确认要将该值用于所有选定行.
也可以单击"EditSelectedvalues"按钮,或者右键单击并选择"Editselected".
编辑该值,然后进行确认.
对参数列表进行排序您可以使用一个或多个列对参数列表进行排序.
按一个列对参数进行排序1单击列标题.
2单击多次以在升序、降序和原始排序顺序之间切换.
按多个列对参数进行排序1单击主列标题多次以按适当的顺序排序.
2按Ctrl并单击辅助列标题以对列进行排序.
特殊属性值有一些属性的值(在项目设计中显示)可能与您必须在参数集中提供的值不同.
复选框有关项目设计中的复选框表示的属性,您必须提供0(已停用)或1(已激活)作为参数集中的值.
参数集70SybaseETL表达式若要在参数集中使用动态值,请像在"Design"窗口中那样输入SBN表达式.
"Eval"列指出是否为表达式启用某属性.
请参见第59页上的"中括号表示法".
设置包含非打印字符(如Tab、CRLF等)的值时,表达式显得尤为重要.
设计项目时,必须为这些属性设置"Evaluate"选项.
注意无法在"ParameterSet"窗口中验证表达式.
下拉菜单有些菜单不显示基础参数值.
这些值中的一部分值需要您设置"Evaluate"选项以便通过参数集对其进行分配.
使用下表可确定哪个值(值)对应于显示的值(提示符)以及是否必须启用"Evaluate".
组件属性提示符值Evaluate数据库组件InterfaceODBCdbodbcSybasedbsybaseOracledboracleIBMDB/2dbdb2SQLitePersistentdbpersistentOLEDBdbole文本组件RowDelimiter位置LF[uChr(10)]xCR[uChr(13)]xCRLF[uConcat(uChr(13),uChr(10))]xColumnDelimiter位置Tab[uChr(9)]xComma,Semicolon;ColumnQuote无单引号'双引号"第4章高级概念和工具用户指南71使用多个引擎可缩短作业执行时间网格体系结构可在多个分布式引擎上并行执行项目,因而可缩短作业执行时间.
要充分利用此可伸缩性,您必须:安装多个网格引擎注册您的网格引擎准备要采用多引擎执行的作业注意在本指南中,术语"网格引擎"和"ETL服务器"可交换使用.
注册网格引擎安装网格引擎后,可以针对特殊存储库注册网格引擎.
从该存储库执行多引擎作业时,将在这些引擎上执行所有项目.
要注册网格引擎,请选择"Tools"|"EngineManager".
如果与多个存储库的连接处于活动状态,请选择其中一个连接.
"EngineManager"窗口显示已经为选定存储库注册的引擎的列表.
已注册的引擎的属性包括:Name–用户为引擎定义的名称.
Host–引擎主机的名称或IP地址.
Port–引擎所监听的端口的编号.
BaseRank–用户为引擎定义的排名.
作业首先尝试在排在首位的引擎上执行项目.
Description–服务器的说明.
您可以手动注册单个或多个ETL服务器.
手动注册网格引擎1选择"Engine"|"New",或者单击"NewInsert"图标.
2输入值.
3单击"OK".
注册多个引擎1选择"Engine"|"NewNetworkSearch".
"NewEngines"窗口即会显示,窗口中显示注册和其它信息以及引擎的在线状态.
2选择要注册的引擎.
使用多个引擎可缩短作业执行时间72SybaseETL3单击"Add".
注意单击工具栏上的"Refresh"图标或者按F5键,可在任意时刻更新和重新装载网格引擎的列表.
修改引擎注册1选择列表中的引擎,然后选择"Engine"|"Edit",或者单击"Editselectedengine"图标.
或者,双击列表中的引擎.
2用新值重写当前值.
3单击"OK".
删除引擎注册1选择要删除的引擎.
2选择"Engine"|"Delete",或者单击工具栏上的"Deleteselectedengine"图标.
.
定义多引擎作业您可以使用并行网格体系结构在多个引擎上运行作业.
典型的多引擎作业包含多个项目,这些项目相互之间没有依赖性或依赖性很小.
因此,可以同时在多个引擎上执行项目.
1双击作业.
2在"Design"窗口中,右键单击选择"MultiEngineExecution".
在执行期间,作业使用注册的引擎分配项目.
执行多引擎作业要执行多引擎作业,请在"Navigator"中右键单击作业,然后选择"JobExecute".
或者,使用RuntimeManager安排它.
第4章高级概念和工具用户指南73引擎监视器EngineMonitor显示有关环境中所有可用网格引擎的信息,无论这些引擎是否在EngineManager中运行或进行了注册都是如此.
注意您只能使用在EngineManager中注册的引擎来执行多引擎作业.
要查看有关可用网格引擎的信息,请选择"Tools"|"EngineMonitor".
EngineMonitor显示引擎详细信息以及有关项目的信息(如当前正在运行的项目数,以及可在网格引擎上同时执行的项目数).
可以使用"UpdateInterval"字段指定要在两次更新之间等待的秒数.
缺省值为5秒.
ExecutionMonitorExecutionMonitor显示当前作业或项目的属性:1选择要执行的项目.
2单击工具栏上的"Execute".
"ExecutionMonitor"窗口分为三个窗格:"Job"、"Projects"和"Events".
"ExecutionMonitor"窗口的上半部分显示当前执行的作业的属性.
"Projects"列表包含作业中的每个项目所对应的行.
属性说明名称作业或项目的名称State当前作业执行状态Start开始日期和时间Stop停止日期和时间Message错误消息属性说明名称项目名State当前项目执行状态Start开始日期和时间Stop停止日期和时间EngineName执行引擎的名称EngineHost执行引擎的主机分析性能数据74SybaseETL"Event"列表显示事件和警报详细信息.
保存或复制执行结果若要将执行的项目的结果保存到HTML文件中,请单击"SaveResults".
若要将作业或项目的执行结果复制和粘贴到不同应用程序(例如,记事本或MicrosoftWord),请右键单击ExecutionMonitor中的作业或项目,然后选择"Copy".
取消作业执行要取消作业执行,请单击"ExecutionMonitor"窗口中的"CancelExecution".
网格引擎尝试取消正在运行的项目.
未启动等待执行的项目.
分析性能数据当执行作业和项目时,SybaseETL收集性能相关数据,并将其存储到存储库表中.
收集性能数据1若要收集性能相关数据并将其存储到存储库中,请选择"File"|"Preferences"|"PerformanceLogging".
2从"LoggingLevel"列表中,选择"1".
EnginePort执行引擎的端口Message错误消息属性说明EventEventnameAlertAlertname时间开始时间、完成时间或出错时间Message由警报定义的详细消息、电子邮件首选项、主题和正文内容.
属性说明第4章高级概念和工具用户指南75查看性能数据若要查看所选项目或作业的性能数据概述,请在Navigator中,右键单击该项目或作业并选择"PerformanceData".
或者,打开项目,右键单击"Design"窗口中的任意位置,然后选择"PerformanceData".
"PerformanceData"窗口随即显示,并在"Overview"选项卡下显示选定项目或作业的执行详细信息.
缺省情况下,显示在最近一个月中执行的执行操作的性能数据.
若要更改显示的执行日期范围,请在工具栏中更改"ExecutionDateRange"的值.
注意一次可查看一个项目或作业的性能数据.
若要永久删除任何执行的性能数据,请选择特定行,然后单击工具栏上的"Deleteselectedperformancelogentries"图标.
或者,按Ctrl+D.
警告!
已删除的性能数据将无法恢复.
查看项目性能数据若要查看项目性能详细信息,请在"Overview"选项卡中选择某一行,然后单击工具栏上的"Drilldowninperformancedata"图标.
或者,双击选定行或所显示图表中的对应栏.
此时将显示一个新的选项卡,其中包含组件名称、持续时间、已读取记录数和已写入记录数等详细信息.
注意当使用IQLoaderDBviaInsertLocation组件或IQLoaderFileviaLoadTable组件查看项目的性能数据时,性能表可能不会显示已读取和写入的记录数的正确值.
由于IQ直接从文件或远程数据库装载数据,因此,该信息对ETL不可用.
该信息在IQ消息日志中提供.
若要查看选定组件的性能详细信息,请在显示组件详细信息的选项卡中选择某一行,然后单击工具栏上的"Drilldowninperformancedata"图标.
或者,双击选定行或图表中的对应栏.
该组件的性能详细信息(例如,事件名称、持续时间、已读取记录数和已写入记录数)随即显示.
若要返回到更高级别的性能详细信息,请单击工具栏上的"Drillupinperfor-mancedata"图标.
若要返回到"Overview"选项卡,请单击工具栏上的"Returntoperformancedataoverview"图标,或者选择"Navigation"|"ReturntoOverview".
分析性能数据76SybaseETL查看作业性能数据在"Overview"选项卡中选择某一行,然后单击工具栏上的"Drilldowninperformancedata"图标.
或者,双击选定行或所显示图表中的对应栏.
此时将显示一个新的选项卡,其中包含项目名称、持续时间、已读取记录数、已写入记录数、结果和装载时间等详细信息.
若要查看特定项目的性能详细信息,请选择某一行,然后单击工具栏上的"Drilldowninperformancedata"图标.
或者,双击选定行或所显示图表中的对应栏.
该项目的性能详细信息(例如,组件名称、持续时间、已读取记录数和已写入记录数)随即显示.
若要返回到更高级别的性能详细信息,请单击工具栏上的"Drillupinperfor-mancedata"图标.
若要返回到"Overview"选项卡,请单击工具栏上的"Returntoperformancedataoverview"图标,或者选择"Navigation"|"ReturntoOverview".
注意若要在项目中查找选定组件,请选择"Tools"|"Showcomponent".
或者,单击工具栏上的"Showselectedcomponent"图标.
搜索性能数据1在性能数据表中选择任意行.
2按Ctrl+F打开搜索窗口.
在"Find"字段中输入搜索条件.
输出性能数据1选择"Tools"|"GenerateReport".
2选择要输出的详细信息级别,并选择目标文件.
可用的详细级别包括:概述JobPerformance(仅在打印作业的性能数据报告时显示)ProjectPerformanceComponentPerformance3为生成的报告输入目标文件路径,或者接受缺省值.
4若要将报告数据限制为"Overview"选项卡中选择的执行信息,请选中"Onlyselectedexecutions".
注意如果未在"Overview"选项卡中选择执行信息,"Onlyselectedexecu-tions"将不可用.
第4章高级概念和工具用户指南775单击"Generate".
成功生成报告之后,将显示一则消息.
单击"Yes"以查看性能数据报告.
该报告将显示表格数据和图形数据.
它包含一个目录,该目录提供了指向该报告中的对应部分的链接.
报告的"PerformanceOverview"部分显示各个项目或作业执行的持续时间.
"ProjectPerformance"、"ComponentPerformance"和"JobPerformance"部分为选定执行显示了一个性能数据表和性能数据图,三个部分分别显示不同级别的数据粒度.
性能数据模型和内容性能数据存储在一个名为TRON_PERFORMANCE的非规范化存储库表中,您可以查询该表,以便收集性能数据.
项目或作业的每次执行都由一个全局唯一ID标识.
您会发现执行开始时间采用三种变化形式:完整时间戳、日期和时间.
此外,还会提供有关启动执行的帐户以及项目或作业所在的存储库的其它信息.
注意执行和事件的开始时间采用协调通用时间(UTC,也称为格林威治标准时间(GMT))记录.
对于每个执行项目ID,将报告版本(修改日期)、名称和全局唯一执行ID.
一个项目执行事件将存储项目的持续时间(以毫秒为单位).
项目组件通过ID、名称、类、类型和版本表示.
过程事件将提供步骤数和已处理记录数.
对于端口事件,将报告ID、名称、类、类型和输入/输出块和记录的数量.
对于每个作业,将报告ID、版本(修改日期)和名称.
将用一个作业执行事件来存储作业的持续时间(以毫秒为单位).
作业的组件(项目)通过其ID、类和版本表示.
事件性能日志基于事件.
对于每个事件,将存储开始时间(采用三种变化形式:完整时间戳、日期和时间)和持续时间(以毫秒为单位).
事件描述包括类、名称和文本.
某些事件包括结果(例如,成功或失败).
此外,还会显示有关事件报告引擎的信息.
为运行时事件配置警报78SybaseETL所报告的事件包括:注意由于分布式多线程的原因,项目执行总时间可能大大少于所有参与组件的执行时间的总和.
为运行时事件配置警报可以将警报设置为在出现运行时事件时(如项目或作业启动、完成或生成错误消息时)获得电子邮件通知.
若要在所连接到的引擎上设置这些警报,请从ETLDevelopmentUI中选择"Tools"|"AlertManager".
此时将显示"AlertandEventConfiguration"窗口:"Engine"窗格–选择要在其上配置警报的引擎.
缺省情况下,所选引擎是由ETLDevelopment启动的引擎.
"Events"窗格–包括一个显示不同事件类型的导航树:Jobs–在作业启动、正常完成或者完成但有错误时出现.
JobStart–在作业启动时出现.
JobFinish–在作业正常完成时出现.
类名称说明controlexecutejob作业的总执行时间(对于每次作业执行显示一条记录,PRF_JOB_DURATION属性中的作业持续时间(以毫秒为单位)).
initloadjob从存储库获取作业定义.
controlexecuteproject项目的总执行时间(对于每次项目执行显示一条记录,PRF_PRJ_DURATION属性中的项目持续时间(以毫秒为单位)).
initloadproject从存储库获取项目定义.
initcreate创建项目和组件实例.
initconfigure配置项目和组件实例.
performprepare执行组件预处理.
performprocess执行组件步骤.
performfinish执行组件后处理.
performread将数据传输到组件输入端口.
performwrite从组件输出端口推入数据.
第4章高级概念和工具用户指南79JobError–在作业完成但有错误时出现.
Projects–在项目启动、正常完成或者完成但有错误时出现.
ProjectStart–在项目启动时出现.
ProjectFinish–在项目正常完成时出现.
ProjectError–在项目完成但有错误时出现.
"Alerts"窗格–显示事件与警报之间的映射.
"AlertDefinition"窗格–用于配置警报.
为事件创建警报1选择要在其上配置警报的引擎.
2选择事件类型.
3在"Alerts"窗格中,单击"Add"图标.
4提供新警报的唯一名称,并单击"OK".
5在"AlertDefinition"窗格中,指定新警报的电子邮件首选项和过滤器条件.
E-mailPreferences:a在"To"、"CC"和"BCC"字段中输入相应的值.
b可以在主题或正文字段中手动输入内容,或单击"SelectEventPro-perty"图标以选择事件属性.
例如,如果选择[JobName]事件属性,触发警报时,事件属性将替换为"Job1"(这是您的实际作业名称).
c单击"TestMail"以测试电子邮件首选项.
注意系统会自动生成测试邮件的主题和正文内容.
Filter:a单击"SelectProjectorJob"图标,并选择应当调用警报的项目或作业.
单击"OK".
此时会自动生成过滤器条件.
但是,您可以根据需要手动编辑过滤器条件.
如果是手动输入过滤器条件,请单击"SelectEventProperties"图标以选择事件属性.
为运行时事件配置警报80SybaseETLb选择"Include"可在项目或作业的事件与过滤器条件相匹配时获得通知.
选择"Exclude"可在不符合过滤器条件时获得通知.
c选择"Enablealertduringsimulation"可获得有关模拟期间所发生事件的通知.
此选项仅对项目事件可用.
单击"Save".
编辑警报1在"Alerts"窗格中,单击警报.
2修改警报首选项,然后单击"Save".
删除警报昞t选择要删除的警报,然后单击"Delete"图标.
复制警报(另存为)1选择要复制的警报.
2单击"SaveAs"图标.
3输入新警报的名称.
4根据需要为警报修改电子邮件首选项和过滤器条件.
单击"Save".
注意Sybase建议在一台计算机上设置电子邮件警报通知.
之后,您便可以在运行于网络上的不同网格引擎之间复制警报配置文件.
使用文本编辑器可以在etc目录中default.
ini文件的"SMTP"部分中定义警报配置.
用户指南81第5章组件本章详细说明了各种SybaseETL组件.
概述SybaseETL组件用于创建项目和作业.
ComponentStore中提供了这些组件.
项目组件包括:源组件–传递转换流的数据.
项目通常从一个或多个源组件开始.
源组件没有输入端口,但至少有一个输出端口.
转换组件、查找组件和Staging组件–将特定转换应用到转换流中的数据.
这些类型的组件均具有输入端口和输出端口.
目标组件(也称作数据接收器)–将数据写入到特定目标.
目标组件拥有一个输入端口,但是没有输出端口.
Loader组件–用于从源数据库或文件中抽取数据并将其装载到IQ数据库中,而不执行任何转换.
主题页码概述81源组件88转换组件120查找组件136Staging组件142目标组件148Loader组件178作业组件189概述82SybaseETL设置组件属性每个组件专用于特定任务,并合并特定于任务的功能.
但是,您可以使用相同过程设置所有组件类型的属性.
只有在使用以下窗口设置了必要属性之后,才能使用项目中的组件:向"Design"窗口添加组件时显示的"Configuration"窗口,或者添加到项目中的组件的"Property"窗口.
对SBN表达式进行求值在使用属性值之前,应为要进行求值的中括号表示法(SBN)表达式设置Evaluate属性.
请参见第59页上的"中括号表示法".
对于某些属性,Evaluate属性在缺省情况下处于选中状态.
可以采用以下方式之一更改Evaluate属性:在"Properties"窗口中,为属性选择"Eval"选项,或者右键单击某个属性并选择"Evaluate".
注意如果为Password属性选择"Eval"这一选项,值将以纯文本的形式显示.
加密属性属性值存储在SybaseETL存储库中.
但是,存储库中的大多数条目未加密,并且以可读字符集的形式表示.
若要切换加密属性,请选择"Properties"窗口中的"Encrypt"选项,或者右键单击属性,然后选择"Encrypt".
属性引用变量使用简单值的属性拥有一个关联变量,而您可以在组件表达式和过程中引用该变量.
该变量始终包含求值属性的当前值(如果设置了"Evaluate").
若要显示变量名,请在"Properties"窗口中右键单击属性,然后选择"ReferenceVariable".
在JavaScriptDebugger中设置转换规则时,请单击"Variable"|"Parameter"以访问"ReferenceVariables".
第5章组件用户指南83自定义属性可向组件添加自定义属性.
自定义属性并入了您可以在组件表达式或过程中引用的变量.
它们可以包含在参数集中赋值或在运行时求值的表达式.
添加自定义属性1在"Design"窗口中选择组件.
2在"Property"窗口中,单击鼠标右键并选择"Add".
3输入属性的名称.
不要使用保留的JavaScript关键字.
请参见第57页上的"变量".
在组件中,此属性是用变量REF.
引用的.
4在"Prompt"字段中,输入一个值,以便在"Properties"窗口中显示为与此属性对应的标签.
5在"Description"字段中,输入要在属性工具提示中使用的说明.
6单击"OK".
删除自定义属性1在"Property"窗口中,右键单击自定义属性并选择"Remove".
2单击"OK"进行确认.
注意还必须删除对关联变量的所有引用.
提供对组件的说明您可以为组件分配名称和说明.
该说明和名称显示在工具提示中.
当您将鼠标移动到组件上方时,将会显示该工具提示.
该名称还显示在组件的顶部.
向组件添加说明1在"Design"窗口中,右键单击组件并选择"Description".
2为组件输入名称和说明.
您可以使用HTML格式的标记设置说明的格式.
概述84SybaseETL配置端口结构组件既有输入端口又有输出端口,前者用于接收数据,而后者用于传递处理后的数据.
逐步执行组件时,通过输出端口转发的数据将被传递到下一组件的输入端口.
管理端口结构在非结构化端口与结构化端口之间添加连接时,前者将继承后者的结构.
您可以向端口结构中添加属性.
向项目添加组件之后,组件端口的颜色将指示该组件的状态:绿色–组件已被正确配置.
黄色–定义了端口结构,但未定义一个或多个必要属性.
红色–既未定义端口结构,也未定义一个或多个必要属性.
注意若要加强对色盲用户的支持,可以通过在"File"|"Preference"窗口中选择"Useenhancedcoloraccessibility"选项,来更改黄色组件端口的颜色.
请参见第19页上的"自定义首选项".
修改端口结构1在"Design"窗口中右键单击端口,然后选择"EditStructure".
2在"StructureViewer"窗口中进行必要的更改,然后单击"Save".
注意如果不能修改端口结构,则"EditStructure"选项不可用.
只能使用"ViewStructure"选项查看端口结构.
添加端口属性1在"Design"窗口中右键单击端口,然后选择"EditStructure".
2在"StructureViewer"窗口中选择"Actions"|"Add",或右键单击属性并选择"Add".
3为新属性输入名称.
端口属性的名称必须以字母字符开头,且只能包含字母数字字符.
不要使用保留的JavaScript关键字.
请参见第57页上的"变量".
4选择"PopulateAttribute"选项将属性添加到多个端口结构.
此时会将新属性添加到参与所选连接的所有端口结构并自动进行映射.
单击"OK".
第5章组件用户指南85删除端口属性1在"Design"窗口中右键单击端口,然后选择"EditStructure".
2在"StructureViewer"窗口中选择"Actions"|"Remove",或右键单击属性并选择"Remove".
修改端口属性1在"Design"窗口中右键单击端口,然后选择"EditStructure".
2在"StructureViewer"窗口中更改属性设置,然后单击"Save".
从其它端口复制端口结构可以根据当前项目中的其它任何可用端口,为端口分配端口结构:1在"Design"窗口中,选择要为其分配新结构的端口.
2右键单击并选择"AssignStructure"|"CopyStructure".
您可以从同一组件的其它端口复制端口结构.
您还可以通过选择"CopyStructure"复制当前项目中的其它任何端口结构.
如果选择了"CopyStructure",将会显示一个窗口,其中显示了当前项目的概要图形.
您可以选择该项目中的任何可用端口.
根据数据库更改更新端口结构若要将数据库更改应用于DBSource、DBSink和DBStaging组件的端口结构,请执行以下操作:右键单击组件并选择"Reconfigure".
当数据库模式发生更改时,"Reconfigure"选项会更新组件配置.
该选项关闭当前连接,打开数据库的新连接,读取查询元数据,并将更新应用到端口结构.
选择要用作新端口结构的源的端口1单击要用作源的端口.
此时,选定端口的属性结构将显示在窗口的下方区域中.
2单击"Apply".
概述86SybaseETL模拟组件初始化组件在"Design"窗口中,右键单击该组件,然后选择"Initialize"或"InitializeandStep".
如果在模拟过程中修改组件的现有属性设置之一,请先重新初始化组件然后再向前移动.
多次分步调试组件您可以在模拟过程中多次分步调试组件,以便预览具有不同属性设置的组件的行为.
重复分步调试不会增加传递到下游组件的记录数.
多次逐步调试组件1在"Design"窗口中单击组件.
2在"Properties"窗口中,修改转换规则或属性设置.
3右键单击组件,然后选择"Initialize".
4右键单击组件,然后选择"Step".
5返回到步骤2.
对组件重复进行分步调试时,将会在每个步骤中重新处理输入端口的相同记录集并对其进行转发,而不增加输出端口的记录数.
可以在组件窗口中或通过使用在SybaseETLDevelopment窗口中单击鼠标右键时显示的菜单对许多组件进行逐步调试.
预览转换结果在模拟模式下工作时,可以(按照源组件或暂存组件中的查询所定义的那样)将数据源的整个结果集分成若干数据块,这些数据块包含记录的子集.
每个子集中的记录数与显示在组件的"Property"窗口中的"ReadBlockSize"参数相关.
若要在逐步调试项目时提高性能,请为"ReadBlockSize"参数选择一个较小的数值.
预览转换结果1逐步调试项目,包括要预览的组件.
2右键单击组件、端口或连接链接,然后选择"Preview".
如果组件的端口不止一个,请先选择要预览转换结果的端口.
第5章组件用户指南87数据库连接设置在以下位置指定数据库连接参数:向"Design"窗口添加组件或双击现有的项目组件时显示的"DatabaseConfiguration"窗口.
在"Design"窗口中选择项目组件时显示的"Properties"窗口.
数据库连接参数如下:Interface–选择要用于连接到目标数据库或源数据库的方法或驱动程序.
若要设置特定数据库选项,请单击"Databaseoptions"图标.
注意SybaseOpenClient必须安装在SybaseETLDevelopment所在的计算机上,并且必须在Windows上的%SYBASE%\ini\sql.
ini文件(UNIX和Linux上的$SYBASE/interfaces文件)中定义数据库服务器.
如果您正在ETLServer上执行项目,ETLServer还必须可以访问OpenClient库.
组件的可用接口可以是下面一项或多项:SybaseODBC–ODBC驱动程序必须安装在SybaseETLDevelopment所在的计算机上,并且必须为目标定义系统数据源名称(DSN).
如果要在ETLServer上执行项目,ETLServer还必须可以访问正确的ODBC驱动程序和DSN.
OLEDBOracleDB2SQLitePersistentHostName–选择源数据库或目标数据库.
"HostName"列表中显示的选项取决于所选的接口.
注意如果选择了SQLitePersistent接口,可以输入现有的或新的数据库文件名.
请参见第285页上的"连接到SQLite数据库".
Databaseusernameandpassword–指定授权数据库用户名和口令.
Databasename–指定要用作源数据库或目标数据库的数据库.
Databaseschema–指定模式或所有者以限制显示的对象,并在该模式下创建新表.
源组件88SybaseETLStandardizeDataFormats–将传入的日期和数字信息转换为标准格式,SybaseETL可在支持不同格式的系统之间移动该格式.
Databaseoptions–覆盖性能缺省值并控制某些事务的行为.
有关数据库选项的列表,请参见第279页上的"特定于接口的数据库选项".
源组件源组件用于传递转换流中的数据.
项目通常从一个或多个源组件开始.
源组件没有输入端口,但至少有一个输出端口.
DBDataProviderFullLoadDBDataProviderFullLoad是一种源组件,用于从可通过ODBC连接或本地驱动程序(DB2、Oracle、Sybase)访问的任何数据源,或通过OLEDB从MicrosoftSQLServer中提取数据.
单个输出端口的结构可镜像查询结果集的结构.
配置DBDataProviderFullLoad组件1将DBDataProviderFullLoad组件拖动到"Design"窗口.
此时将显示"DatabaseConfiguration"窗口.
若要打开配置窗口,也可以在"Properties"窗口中选择组件,并单击"Properties"图标.
2输入连接参数.
请参见第89页上的"DataProviderFullLoad属性列表".
您必须添加有效的接口和主机名.
组件说明DBDataProviderFullLoad从可通过ODBC连接或本地驱动程序(DB2、Oracle、Sybase)访问的任何数据源或通过OLEDB从MicrosoftSQLServer中提取数据.
DBDataProviderIndexLoad执行增量数据装载.
增量装载是由包含升序值的升序索引属性控制的.
TextDataProvider读取结构化数据,并将其从文本文件转换为表.
XMLviaSQLDataProvider将层次结构XML数据装载到关系模式中.
CDCProviderSybaseReplicationServer从ReplicationServer接收源表数据更改,将数据转换到标准ETL数据流,然后将数据发送到下一个组件.
第5章组件用户指南893单击"Query"图标.
创建并保存查询,以便从数据源检索数据集.
您可以直接在"Query"窗口中创建查询,也可以单击"QueryDesigner"图标以打开QueryDesigner并生成查询.
请参见第47页上的"QueryDesigner".
4单击"Finish".
5在"Properties"窗口中指定所有其它可选属性和数据库选项.
有关如何修改端口结构和端口属性的信息,请参见第84页上的"管理端口结构".
DataProviderFullLoad属性列表DataProviderFullLoad属性列表可标识您必须在"Property"窗口中定义的连接参数和其它项.
必要属性可选属性属性说明Interface标识用于连接到数据源的方法或驱动程序.
HostName标识数据源.
"HostName"列表中显示的选项取决于所选的接口.
Query创建从数据源检索信息的查询.
使用"Query"窗口创建简单查询,或单击"QueryDesigner"图标打开QueryDesigner进行创建.
请参见第47页上的"QueryDesigner".
属性说明UserandPassword标识获得授权的数据库用户,并保护数据库免受未经授权的访问的侵害.
ReadBlockSize确定组件在单个步骤中检索的记录数.
PreProcessingSQL创建在组件初始化过程中运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
PostProcessingSQL创建在所有组件执行后运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
数据库标识要用作数据源的数据库.
如果选择此选项,您还必须选择相应的接口,在某些情况下还必须指定相应的用户ID和口令.
源组件90SybaseETLDBDataProviderFullLoad演示SybaseET包括DBDataProviderFullLoad组件的几个演示.
这些演示可用作Flash演示,而且可用作演示存储库中的样本项目.
若要运行Flash演示,请选择"Help"|"Demonstrations"|"Source"|"DBDataProvider-FullLoad".
若要访问样本项目,请在"Navigator"中选择"Repository"|"TRANSFORMER.
transformer.
Repository"|"Projects".
然后选择:DemoTransferGermanCustomersDemoTransferGermanProductsDemoTransferGermanSalesDemoTransferU.
S.
CustomersDemoTransferU.
S.
ProductsSchema标识要用作数据源的模式或所有者.
显示的对象相应地受到限制,新表将采用您指定的模式创建.
StandardizeDataFormat将传入的日期和数字信息转换为SybaseETL可以在支持不同格式的系统之间移动的标准格式.
日期将转换为包括年、月、日、小时、分钟、秒钟和秒钟分数的格式:YYYY-MM-DDhh:mm:ss.
s.
例如:2005-12-0116:40:59.
123数字转换后使用句点(".
")作为小数分隔符.
DatabaseOptions设置用于覆盖性能缺省值并控制某些事务的行为的选项.
请参见第87页上的"数据库连接设置".
Transactional由DBDataProviderFullLoad组件执行的所有工作(包括pre-SQL和post-SQL)均在单个数据库事务中执行,该事务在项目正常完成时提交.
如果此组件遇到错误,请选择此选项来回滚事务.
有关"PropagateRollback"属性的信息,请参见第189页上的"作业组件"和第17页上的"为项目和作业启用事务性".
属性说明第5章组件用户指南91DBDataProviderIndexLoadDBDataProviderIndexLoad是一种源组件,可根据升序索引值执行增量数据装载.
在执行过程中,DBDataProviderIndexLoad将忽略以前抽取的所有数据记录.
使用DBDataProviderIndexLoad,可定期执行跟踪源更改的增量装载.
对模拟序列的影响如下:"ReadBlockSize"的值影响在单个模拟步骤中装载的记录数.
如果项目是在模拟过程中执行的,则不会更新存储库中的装载索引的值.
配置DBDataProviderIndexLoad组件1将DBDataProviderIndexLoad组件拖动到"Design"窗口.
此时将显示"DatabaseConfiguration"窗口.
若要打开配置窗口,也可以在"Properties"窗口中选择组件,并单击"Properties"图标.
2添加连接参数.
有关特定字段要求,请参见第91页上的"DBDataProviderIndexLoad属性列表".
您必须添加有效的接口和主机名.
3单击"Finish".
4在"Properties"窗口中,从数据库对象列表中选择升序索引属性.
5单击"Query"图标.
创建并保存查询,以便从数据源检索数据集.
您可以直接在"Query"窗口中创建简单查询,也可以单击"QueryDesigner"图标进行创建.
请参见第47页上的"QueryDesigner".
6在"Properties"窗口中指定所有其它可选属性和数据库选项.
重置升序索引值不能直接处理存储库中装载索引的永久值.
但是,可将该值重置为存储在LoadIndexValue属性中的值.
若要重置执行属性,请执行下列操作:右键单击"Navigator"中的项目并选择"ResetExecutionProperties".
根据数据库更改更新端口结构请参见第85页上的"根据数据库更改更新端口结构".
DBDataProviderIndexLoad属性列表DBDataProviderIndexLoad属性列表可标识必须在"DatabaseConfigura-tion"窗口中定义的连接参数和其它项.
源组件92SybaseETL必要属性可选属性属性说明Interface标识要用于连接到数据源的方法或驱动程序.
HostName标识数据源.
"HostName"列表中显示的选项取决于所选的接口.
Query创建从数据源检索信息的查询.
使用预定义变量LoadIndex在WHERE子句中限定选择条件.
LoadIndex需使用中括号括起来,因为该变量是在查询发送到数据库之前进行求值,例如:select*FROMSALESWHERESA_DELIVERYDATE>'[LoadIndex]'ORDERBYSA_DELIVERYDATE注意引号字符因数据库系统而异.
在MicrosoftAccess数据库中,将#用于日期时间值.
使用"Query"窗口创建简单查询,或单击"QueryDesigner"图标打开QueryDesigner进行创建.
请参见第47页上的"QueryDesigner".
AscendingIndex选择包含用于增量装载的升序索引的属性.
属性说明UserandPassword标识获得授权的数据库用户,并保护数据库免受未经授权的访问的侵害.
LoadIndexValue在执行SybaseETL作业或日程表时将自动使用并存储升序索引属性的最大值.
LoadIndexValue可使用用户提供的特定值模拟项目.
例如:2005-01-19100ReadBlockSize确定组件在单个步骤中检索的记录数.
PreProcessingSQL创建在组件初始化过程中运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
PostProcessingSQL创建在所有组件执行后运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
数据库标识要用作数据源的数据库.
如果选择此选项,您还必须选择相应的接口,在某些情况下还必须指定相应的用户ID和口令.
第5章组件用户指南93模拟IndexLoad对包含IndexLoad组件的项目进行全面配置之后,可以模拟增量装载:1若要运行项目,请选择"Run"|"Trace".
此时将处理与LoadIndexValue属性指定的条件相匹配的所有记录.
2选择执行后处理操作,以实现成功执行.
单击"Yes".
3再次模拟项目或IndexLoad组件.
IndexLoad组件不会返回任何记录.
请参见第27页上的"模拟项目".
注意可以在执行步骤1和步骤2期间手动更新源表,以验证是否检索了修改后的正确记录.
4若要再次模拟,请右键单击组件并选择"ResetLoadIndexValue",或在"Properties"窗口中为"LoadIndexValue"属性输入一个新值.
Schema标识要用作数据源的模式/所有者.
显示的对象相应地受到限制,新表将采用该模式创建.
StandardizeDataFormat将传入的日期和数字信息转换为SybaseETL可以在支持不同格式的系统之间移动的标准格式.
日期将转换为包括年、月、日、小时、分钟、秒钟和秒钟分数的格式:YYYY-MM-DDhh:mm:ss.
s.
例如:2005-12-0116:40:59.
123数字转换后使用句点(".
")作为小数分隔符.
DatabaseOptions设置用于覆盖性能缺省值并控制某些事务的行为的选项.
请参见第87页上的"数据库连接设置".
Transactional由DBDataProviderIndexLoad组件执行的所有工作(包括pre-SQL和post-SQL)均在单个数据库事务中执行,该事务在项目正常完成时提交.
如果此组件遇到错误,请选择此选项来回滚事务.
有关"PropagateRollback"属性的信息,请参见第189页上的"作业组件"和第17页上的"为项目和作业启用事务性".
属性说明源组件94SybaseETLDataProviderIndexLoad演示SybaseETL包括DataProviderIndexLoad组件的演示.
这些演示可用作Flash演示,而且可用作演示存储库中的样本项目.
若要运行Flash演示,请选择"Help"|"Demonstrations"|"Source"|"DBDataProviderIndexLoad".
若要访问样本项目,请在Navigator中选择"Repository"|"TRANSFORMER.
transformer.
Repository"|"Projects".
然后选择"DemoTransferU.
S.
Salesonanincrementalbasis".
TextDataProviderTextDataProvider可读取结构化数据,并将其从文本文件转换为表.
文本源必须包含长度固定的字段或分隔字段.
配置TextDataProvider组件1将TextDataProvider拖动到"Design"窗口.
2在TextDataProvider组件窗口中,选择要用作数据源的文本文件.
使用TextDataProvider组件窗口,可以定义输出端口的数据的结构属性.
其中包括以下内容:"FileContent"窗格–显示源文档的内容.
"Properties"窗格–文件说明属性.
可以修改文件说明属性(如果需要).
有关特定字段要求,请参见第96页上的"TextDataProvider属性列表".
"OutputPortContent"窗格–输出端口的数据的表格视图.
在"OutputPortContent"窗格中,单击"Regeneratethecolumndefinition"图标以重新生成列定义.
如果要从数据文件中读取列名,请单击"Readcolumnnamesfromadatafile"图标.
请参见第94页上的"从数据文件读取列名".
从数据文件读取列名1在TextDataProvider组件窗口的"OutputPortContent"窗格中,单击"Readcolumnnamesfromthedatafile"图标.
2提供包含列标题的记录的行号.
单击"Enter"进行确认.
可以双击列标题以编辑列的名称.
第5章组件用户指南95跳过行分隔符处理数据时,不会自动跳过包含列标题的行.
若要在装载时跳过输入表的开头指定的行数,请在"SkipFirstRows"字段中输入值.
如果要跳过的行包含的格式与随后行不同;例如,如果存在不含列分隔符的"标头"行,而随后的行都包含5列,它仍然计数为1行.
注意被引号括起的行分隔符不被视为行分隔符.
分隔符注意事项本节讨论在使用引号字符、行分隔符和列分隔符时应牢记的注意事项.
在以下情况下,值可以具有引号字符:在值开头使用引号整个值用引号括住如果值以引号开头,则将读取下一个引号分隔符组合之前的每一项内容,否则读取下一个分隔符之前的每一项内容.
例如,如果列A是单个数据列,则可以用引号括起为"列A".
但是,以下述任何方式用引号括起的值是无效的:"列"A–不用引号括住整个值.
"列"A"–不从值的开头使用引号.
如果有两列数据(称为"列A"和"列B"),这两列数据以逗号列分隔符和CRLF行分隔符分隔,则:可以将值括起为"列A"、"列B".
不能将值括起为"列"A、"列B".
下面是使用引号字符和分隔符的一些示例:如果您正在使用:双引号(")作为列引号逗号(,)作为列分隔符换行符()作为行分隔符如果来自源文件的值为:"ABCD","DEF"–列1将被读取为ABCD,列2将被读取为DEF.
源组件96SybaseETL""A"","D,E,F"–列1将被读取为"A",列2将被读取为D,E,F.
""A","D,E"–列1将被读取为"A,列2将被读取为D,E.
TextDataProvider属性列表TextDataProvider属性列表可标识与源文件的结构有关的项.
属性最初是在您向项目添加组件时设置的.
必要属性可选属性属性说明TextSource标识要用作数据源的文本文件.
可以在向项目添加TextDataProvider时选择数据源,也可以从"Properties"窗口中进行选择.
若要从"Properties"窗口中选择数据源,请单击"TextSource"图标,然后选择相应文件.
列在源文件中定义数据的列.
属性说明RowDelimiter指定每一行的分隔方式:Position(固定行位置)LF(换行符)CR(回车符)CRLF(回车符加换行符)也可以输入其它分隔符.
RowLength指定每个固定行中的字符数,前提是已选择"Position"作为"RowDelimiter".
ColumnDelimiter指定列的分隔方式:Position(固定列位置)TabCommaSemicolon也可以输入其它分隔符.
第5章组件用户指南97TextDataProvider演示SybaseETL为TextDataProvider组件包含了若干个演示.
这些演示可用作Flash演示,而且可用作演示存储库中的样本项目.
若要运行Flash演示,请选择"Help"|"Demonstrations"|"Source"|"TextDataProvider".
ColumnQuote指定源文件中的值的引号使用方式:无单引号双引号或者,输入其它引号字符或字符串.
FixedbyBytes指定如何解释为行长度、列开头和列结尾提供的值:Notselected(缺省值)–将值解释为字符数.
Selected–将值解释为字节数.
例如,假定源文件包括abcabcdef,并且具有以下特性:文件类型–固定(可变行)编码–GB2312行分隔符–'\n'列定义–列1:1-7;列2:9-10如果选择了"FixedbyBytes"选项:列1显示前7个字节,即,abc.
列2显示第9和第10个字节,即,ab.
如果未选择"FixedbyBytes"选项:列1显示前7个字符,即,abc.
列2显示后两个字符,即,cd.
NullByteSubstitute设置要替换空字节的字符.
SkipRows跳过行序列中的指定行数.
Encoding设置当前字符编码.
SupportUnicode设置Unicode支持.
ReadBlockSize确定组件在单个步骤中检索的记录数.
将空字符视为NULL用"NULL"替换"空"值.
属性说明源组件98SybaseETL若要访问样本项目,请在"Navigator"中选择"Repository"|"TRANSFORMER.
transformer.
Repository"|"Projects".
然后选择:DemoTransferGermanCustomersDemoTransferGermanSalesDemoTransferU.
S.
CustomersXMLviaSQLDataProviderXMLviaSQLDataProvider组件可将分层XML数据装载到关系模式中.
您可以像查询关系数据库一样查询该关系模式.
XMLviaSQLDataProvider是专为销售订单、股票报价或科研数据等以数据为中心的XML文档设计的,这些文档一般采用常规的层次结构.
配置XMLviaSQLDataProvider组件1将XMLviaSQLDataProvider组件拖动到"Design"窗口.
2在"Properties"窗口中,单击"XMLSource"图标,然后选择要用作数据源的XML.
您可以指定HTTP、FTP、URL或文件名.
3单击"DataOutput"图标.
4单击"Properties"图标将打开XMLPortManager.
针对每个输出端口指定查询.
缺省情况下,XMLviaSQLData包括一个输出端口,但您可以添加端口.
您在XMLPortManager中添加的所有输出端口都将显示在"Design"窗口中.
请参见第99页上的"使用XMLPortManager".
更新输出端口结构更新输出端口结构以反映对XML源文件所做的更改:右键单击"XMLviaSQLDataProvider"组件并选择"Reconfigure".
当数据库模式发生更改时,"Reconfigure"选项会更新组件配置.
该选项关闭当前连接,打开数据库的新连接,读取XML源文件,并将更新应用到输出端口结构.
第5章组件用户指南99使用XMLPortManager使用XMLPortManager窗口,可以创建针对XML源文件的查询,以便定义一个或多个输出数据流.
XML源视图–显示源文档的内容.
"DataModel"选项卡–显示源文档的关系视图.
"Reference"选项卡–显示可用的组件变量.
输出端口区域–用于编写针对数据模型的查询,并将结果发送到特定输出端口.
虽然XMLPortManager在缺省情况下配置有一个输出端口,但是,您可以添加其它端口,并且编写其它查询.
编写查询打开XMLPortManager时,输出端口区域将包含一个针对XML视图的标准查询,该查询将所有列和所有行返回到OUT1.
假定XML源文档包含以每个数据节点的属性值表示的客户数据:若要针对XML检索客户属性,可以使用与以下内容类似的查询:select*fromV_XML_CONTENTWHERETAB_data_ATT_city='Kingston'此查询将打开ContentBrowser,并且仅返回那些其city值与Kingston相匹配的行.
在表格视图中,可以编写如下所示的查询:select*fromTAB_datawhereATT_city='Kingston'注意XML数据关系通常表示为父/子或节点/属性关系.
ContentBrowser将以列和行的形式返回XMLPortManager的查询结果.
对于列引用和行引用,引用的是查询结果,而不是XML数据.
源组件100SybaseETL从XML数据源检索数据使用标准SQL语法在输出端口区域的端口字段中直接编写查询:selectcolumnFROMtable_nameQueryDesigner可帮助您设计针对表格视图的查询.
根据XML源的结构,您可能需要在各表之间创建连接,才能返回数据行.
缺省的XMLview_name为V_XML_CONTENT.
若要返回一行,请使用WHERE子句对select语句进行限定(select*fromV_XML_CONTENTWHERETAB_state_ATT_state='NY').
在表格视图中,格式为属性表达式的XML节点有时会创建一个包装元素,您可以使用WHERE子句对该元素进行限定(select*fromTAB_datawhereATT_city='Kingston')以返回一行.
编写针对表式视图的查询可以在输出端口区域的端口字段中直接编写针对表式视图所做的查询,也可以使用QueryDesigner进行编写.
请使用标准SQL语法对表式视图中的表进行查询.
添加和删除端口右键单击端口部分,然后选择"Addport"或"Removeport".
设置样本项目本节将通过一个简单示例指导您完成对XMLviaSQLDataProvider组件的设置.
若要遵照本示例操作,请将PRODUCTS.
xml用作XML源;它位于SybaseETL安装目录的Demodata子目录中.
XMLPortManager打开XMLPortManager,然后在输出端口区域中定义端口.
根据XMLDataModel表,每个端口都是通过select语句来描述的.
第5章组件用户指南101XML源下面的XML文档涉及的是一种简单的产品结构.
每种产品都是用ID(PR_ID)、名称(PR_NAME)、产品组(PR_GROUP1)和价格(PR_PRICE)来描述的,例如:43567224CDRomDriveCDRom134435673Notebook235Notebook1455数据模型根元素(TAB_dataroot)对应有一个表,随后是与级别1的元素对应的一个或多个表.
在上例中,只有(TAB_PRODUCTS)元素位于此级别.
在下一级别,可以找到一个与级别2的各个元素(TAB_PR_ID,TAB_PR_NAME、TAB_PR_GROUP1、TAB_PR_PRICE)对应的表.
XML文档中可以包含多个嵌套的级别,并且每个级别可以创建另一组表.
注意可以在DBSchemaOptions属性中更改所生成的表名称的前缀.
源组件102SybaseETL这些表是通过外键链接在一起的.
表TAB_PRODUCTS通过ATT_FK_dataroot属性链接到TAB_dataroot.
级别2的各表通过ATT_FK_PRODUCTS属性链接到表PRODUCTS.
若要创建包含PRODUCTS记录的视图,必须将级别2的各表与表TAB_PRODUCTS连接.
该连接是通过级别2的每个表的ATT_FK_PRODUCTS属性与TAB_PRODUCTS的ATT_ROW_ID来限定的.
只有级别2的各表的值属性才是选定属性:ATT_PR_ID、ATT_PR_NAME、ATT_PR_GROUP1和ATT_PR_PRICE.
selectTAB_PR_ID.
ATT_PR_ID,TAB_PR_NAME.
ATT_PR_NAME,TAB_PR_GROUP1.
ATT_PR_GROUP1,TAB_PR_PRICE.
ATT_PR_PRICEFROMTAB_PRODUCTS,TAB_PR_ID,TAB_PR_NAME,TAB_PR_GROUP1,TAB_PR_PRICEWHERETAB_PR_ID.
ATT_FK_PRODUCTS=TAB_PRODUCTS.
ATT_ROW_IDANDTAB_PR_NAME.
ATT_FK_PRODUCTS=TAB_PRODUCTS.
ATT_ROW_IDANDTAB_PR_GROUP1.
ATT_FK_PRODUCTS=TAB_PRODUCTS.
ATT_ROW_IDANDTAB_PR_PRICE.
ATT_FK_PRODUCTS=TAB_PRODUCTS.
ATT_ROW_ID根级级别1的元素级别2的元素TAB_datarootATT_ROW_IDATT_FK_generatedATT_xmlns_odATT_xsi_noTAB_PRODUCTSATT_ROW_IDATT_FK_datarootTAB_PR_IDATT_ROW_IDATT_FK_PRODUCTSATT_PR_IDTAB_PR_NAMEATT_ROW_IDATT_FK_PRODUCTSATT_PR_NAMETAB_PR_GROUP1ATT_ROW_IDATT_FK_PRODUCTSATT_PR_GROUP1TAB_PR_PRICEATT_ROW_IDATT_FK_PRODUCTSATT_PR_PRICE第5章组件用户指南103XMLviaSQLDataProvider属性列表XMLviaSQLDataProvider属性列表可设置XML源文件的处理选项.
必要属性可选属性属性说明XMLSource标识数据源.
可以在您向项目添加组件时选择XML数据源,也可以从"Properties"窗口中选择文件.
若要从"Properties"窗口中选择数据源,请单击"XMLSource",然后选择该文件.
DataOutput打开XMLPortManager,即可在其中对XML源进行查询的管理主控台.
请参见第99页上的"使用XMLPortManager".
属性说明DocumentSchema标识可用于验证XML源的外部模式(.
xsd)或DTD.
NamespaceSchema指向外部命名空间模式的位置.
XML模式包含类型定义和元素声明等组件,这些类型定义和元素声明可用于评估格式正确的元素和属性信息项的有效性.
ValidateSchema启用模式和DTD验证.
XMLOptions设置以下XML处理选项:Fullschemacheck–若要查看是否存在可能比较耗费时间或内存的项,请将此项设置为1.
粒子唯一归属约束检查和粒子派生限制检查都是由此选项控制的.
缺省值为0.
IgnoreexternalDTD–若要忽略在文档中引用的外部DTD,请将该值设置为1.
缺省值为0.
Processnamespace–如果不想在分析过程中考虑命名空间规范,请将该值设置为0.
缺省值为1.
PreserveElementwhitespace–若要保留XML元素值中的空格,请将该值设置为1.
若要剪裁掉XML元素值中的空格,请将该值设置为0.
如果XML元素值仅包括空格,并且值设置为0,则它被解释为空元素值.
DBSchema选择数据库模式设置(创建表)脚本.
使用此选项可强制执行固定数据模型.
源组件104SybaseETLXMLviaSQLDataProvider演示SybaseETL包括XMLviaSQLDataProvider组件的演示.
这些演示可用作Flash演示,而且可用作演示存储库中的样本项目.
若要运行Flash演示,请选择"Help"|"Demonstrations"|"Source"|"XMLviaSQL-DataProvider".
DBSchemaOptions自定义从XML结构生成的表和属性的设置,包括表和属性名称的前缀.
DBSchema选项为:Attributenamecase–为通过XML生成的属性名设置格式.
"upper"和"lower"值将相应地转换属性名.
"Mixed"(缺省值)将名称保留为在XML文档中的显示格式.
Attributenameprefix–用于生成的每个属性名的前缀.
Createindexes–若要对表的主键自动生成索引,请设置为1(缺省值).
Createflatviews–若要自动生成名为V_XML_CONTENT的视图,请设置为1(缺省值).
该视图连接所有表,并在宽表中返回所有XML数据.
如果数据库模式生成的表多于32个,则该视图不起作用,并且必须关闭该选项.
Foreignkeyprefix–用于作为外键的属性的前缀.
IgnoreEmptyLeafElementValues–如果您不希望数据库包括不含有任何数据的特定XML叶元素的列条目,请将该值设置为1.
如果设置为0,从XML文档创建的数据库将包括所有XML叶元素的列条目,而不管这些元素是否为空.
Primarykeyname–用于主键的属性名.
Tablenamecase–为通过xml生成的表名设置格式.
"upper"和"lower"值将相应地转换表名.
"Mixed"将名称保留为在XML文档中的显示格式.
Tablenameprefix–用于生成的表名的前缀.
DatabaseOptions设置用于覆盖性能缺省值并控制某些事务的行为的选项.
请参见第87页上的"数据库连接设置".
ReadBlockSize确定组件在单个步骤中检索的记录数.
如果组件的输出端口不止一个,则读取块大小将被忽略,并且该组件将在单个步骤中提供所有端口的数据.
属性说明第5章组件用户指南105若要访问样本项目,请在"Navigator"中选择"Repository"|"TRANSFORMER.
transformer.
Repository"|"Projects".
然后选择"DemoXMLviaSQLDataProvider".
CDCProviderSybaseReplicationServerCDC(CaptureDataChanges)ProviderSybaseReplicationServer组件用于实现增量装载.
该组件具备以下功能:从SybaseReplicationServer接收数据更改,将其转换到ETL标准数据流,然后将数据发送到下一个组件.
自动执行配置SybaseReplicationServer的过程,包括将源表标记为已复制,创建或删除复制定义、连接和订阅.
此整个过程称为"创建或删除复制",并且它使ReplicationServer可以启动或停止捕获源表数据更改.
注意CDCProviderSybaseReplicationServer组件仅支持作为源数据库的ASE和Oracle.
配置CDCProviderSybaseReplicationServer组件之前:安装ReplicationServer.
注意您不需要在同一台计算机上安装ReplicationServer和ETLServer.
为ReplicationServer分区分配足够的磁盘空间.
请参见《ReplicationServer15.
2参考手册》的第3章"ReplicationServer命令".
配置ReplicationCDC服务:a编辑源数据库、ReplicationServer和ETLServer的interfaces文件.
请参见"更新源数据库、ReplicationServer和ETLServer的interfaces文件".
b为每个ETLServer配置ReplicationCDC服务名称.
请参见第108页上的"为每个ETLServer配置ReplicationCDC服务名称".
如果源数据库为AdaptiveServerEnterprise,请使用rs_init将源数据库添加到ReplicationServer.
请参见《ReplicationServer配置指南》.
如果源数据库为Oracle,请参见第109页上的"将Oracle配置为复制源",了解如何将Oracle添加到ReplicationServer.
源组件106SybaseETL更新源数据库、ReplicationServer和ETLServer的interfaces文件1浏览interfaces文件.
在Windows上,该文件位于\ini\sql.
ini目录下.
在UNIX和Linux上,该文件位于/interfaces目录下.
2使用文本编辑器修改所有三个interfaces文件以包括:所有ETLServer的ReplicationCDC服务的条目.
例如,在Windows上,使用:[]master=TCP,,query=TCP,,在UNIX或Linux上,使用:mastertcpsun-etherquerytcpsun-ether其中:是要由单个ETLServer使用的唯一的ReplicationCDC服务名称.
是运行网格ETLServer的计算机的名称.
是ReplicationCDC服务所监听的端口.
包含所有CDC服务条目的SYBETL_VIR_RDBMS条目.
例如,在Windows上,使用:[SYBETL_VIR_RDBMS]master=TCP,,query=TCP,,master=TCP,,query=TCP,,第5章组件用户指南107在UNIX和Linux上,使用:SYBETL_VIR_RDBMSmastertcpsun-etherquerytcpsun-ethermastertcpsun-etherquerytcpsun-ether注意虚拟数据库和ReplicationCDC服务的IP端口应当匹配.
如果源数据库为ASE,请创建或复制ASE源数据库、ReplicationServer,以及EmbeddedReplicationServerSystemDatabase(ERSSD)或RSSD的条目.
如果源数据库为Oracle,请创建或复制ReplicationAgent、ReplicationServer,以及EmbeddedReplicationServerSystemDatabase(ERSSD)或RSSD的条目.
例如,在Windows上,使用:[]master=tcp,,query=tcp,,[]master=tcp,,query=tcp,,[]master=tcp,,query=tcp,,在UNIX和Linux上,使用:mastertcpsun-etherquerytcpsun-ethermastertcpsun-etherquerytcpsun-ether源组件108SybaseETLmastertcpsun-etherquerytcpsun-ether为每个ETLServer配置ReplicationCDC服务名称可以采用以下方式之一定义ReplicationCDC服务名称:昞t更新svc.
conf文件:a导航至安装文件夹的etc目录,并使用文本编辑器打开svc.
conf文件.
b更新instance_name以包括ReplicationCDC服务名称.
例如,如果ReplicationCDC服务名称为ETL_RCS_INS1,则输入:注意用于启动ReplicationCDC服务的所有网格引擎必须在同一个子网中.
repcdc{type="repcdc";container="inprocess";autostart=true;config{instance_name="ETL_RCS_INS1";}}注意ReplicationCDC服务名称对每个网格引擎都必须是唯一的.
c将文件另存为UTF-8编码格式.
否则,网格引擎无法读取文件,并且可能无法启动.
第5章组件用户指南109使用repcdcinstancename命令行参数–如果定义此参数值,则网格引擎将忽略svc.
conf文件中的ReplicationCDC服务配置,并使用参数值启动服务.
若要使用命令行以ReplicationCDC服务名称ETL_RCS_INS1启动网格引擎,请输入:tGridNode--repcdcinstancenameETL_RCS_INS1注意如果ReplicationCDC服务未正确配置且不处于运行状态,则CDCProviderSybaseReplicationServer组件将不起作用.
将Oracle配置为复制源本节介绍在将Oracle配置为复制源的过程中涉及到的任务.
注意如果已在复制环境中配置了Oracle数据库,则仍然必须执行"配置Oracle实例"、"配置ReplicationAgent"和"将主数据库添加到复制系统"各节中指定的任务后,才能使用ETL.
安装ReplicationAgent(RAX)和创建ReplicationAgentforOracle(RAO)实例1安装ReplicationAgent.
2将下载的许可证文件复制到安装文件夹下的SYSAM-2_0\licenses.
3启动RAO实例.
例如:ra_admin-crao_inst1-p1333-toracle4在CLASSPATH中包括OracleJDBC驱动程序jar文件.
例如:setCLASSPATH=%CLASSPATH%;C:\oracle\product\10.
2.
0\db_2\jdbc\lib\ojdbc14.
jar配置Oracle实例以系统管理员身份使用SQLPLUS连接到Oracle实例,并执行以下配置任务:1准备Oracle以使用重做日志若要验证存档日志模式,请输入:selectlog_modefromv$database;源组件110SybaseETL如果存档日志模式已启用,则将显示以下消息:LOG_MODE-------ARCHIVELOG如果存档日志模式已关闭,则将显示以下消息:shutdownimmediate;exit运行.
sqlpus/nolog命令,以将存档日志模式设置为打开,然后输入:connectsys/passwordassysdba;startupmount;alterdatabasearchivelog;alterdatabaseopen;altersystemsetrecyclebin=off;2对源表启用补充日志记录.
ALTERTABLET1ADDSUPPLEMENTALLOGDATA(ALL)COLUMNS;注意必须在ETL中对源表启用补充日志记录.
3将主键信息添加到Oracle重做日志中.
alterdatabaseaddsupplementallogdata(primarykey,uniqueindex)columns;selectSUPPLEMENTAL_LOG_DATA_MIN,SUPPLEMENTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UIfromv$database;如果成功添加了主键信息,则将显示以下消息:SUPPLEMESUPSUPYESYESYES4为ReplicationAgent和ReplicationServer创建Oracle用户,然后对其执行grantconnect,resource,dba;注意不要使用ReplicationServer的Oracle用户来执行任何DML事务,因为ReplicationServer不会捕获由此用户进行的数据更改.
5配置ReplicationAgent.
请参见配置ReplicationAgent.
第5章组件用户指南111配置ReplicationAgent若要配置ReplicationAgent,请启动RAO实例,并使用isql连接到该实例.
然后,执行以下配置任务:1设置Oracle源数据库的存档日志文件路径.
输入:ra_configpdb_include_archives,truegora_configpdb_archive_path,go2配置ReplicationAgent到主数据库的连接.
输入:ra_configpds_host_name,gora_configpds_port_numbergora_configpds_database_name,gora_configpds_username,gora_configpds_password,gotest_connectionPDSgo如果成功建立连接,则将显示以下消息:TypeConnectionPDSsucceeded3配置ReplicationAgent到ReplicationServer的连接.
输入:ra_configrs_host_name,gora_configrs_port_number,gora_configrs_username,gora_configrs_password,源组件112SybaseETLgora_configrs_source_dsgora_configrs_source_db,go注意必须为ETL指定RAO实例名称.
4配置ReplicationAgent到ERSSD的连接.
输入:ra_configrssd_host_namegora_configrssd_port_number,gora_configrssd_username,gora_configrssd_password,gora_configrssd_database_name,gotest_connectionRSgo如果成功建立连接,则将显示以下消息:TypeConnectionRSsucceeded5如果ReplicationServer的字符集与ReplicationAgent不同,请更新该字符集.
输入:ra_configrs_charset,第5章组件用户指南1136若要正确处理更新或删除事务,请将ltl_send_only_primary_keys配置为false.
输入:ra_configltl_send_only_primary_keys,false注意如果不执行此步骤,则ETL无法处理删除或更新事务.
7初始化ReplicationAgent.
输入:pdb_xloginit将主数据库添加到复制系统使用isql连接到ReplicationServer,并输入:createconnectionto.
seterrorclassrs_sqlserver_error_classsetfunctionstringclassrs_sqlserver_function_classsetusernamesetpasswordwithlogtransferon,dsi_suspended其中:rs_source_ds–与ReplicationAgent中的rs_source_ds参数的值相同.
rs_source_db–与ReplicationAgent中的rs_source_db参数的值相同.
恢复ReplicationAgentReplicationAgent现在已做好准备复制事务.
通过在ReplicationAgent中执行resume命令,启动复制:resumego验证ReplicationAgent是否正在复制ra_statusgo如果ReplicationAgent配置正确,则将显示以下消息:StateActionREPLICATINGReadytoreplicatedata.
源组件114SybaseETL配置CDCProviderReplicationServer组件1将CDCReplicationServerProvider组件拖至"Design"窗口上.
2指定要用于捕获数据更改,及其用户名和口令的ReplicationServer的名称.
3在"SourceTableOptions"字段中设置复制定义选项.
请参见第115页上的"设置复制定义选项".
4若要过滤限定的数据更改,请选择以下捕获模式之一:Full–接收所有更改,并逐一发送它们.
输出更改与来自ReplicationServer的输入更改相同.
Last–仅发送每行最后一个接收的数据更改.
具有相同键值的所有更改都被合并到单个更改中.
例如,如果有两个更改:1.
updatetest_tablesetcol_1='x'wherekey_col='A'2.
updatetest_tablesetcol_1='y'wherekey_col='A'如果选择"Last"作为捕获模式,则输出为:updatetest_tablesetcol_1='y'wherekey_col='A'Sybase建议将此属性设置为"Last",该值适用于大多数增量装载.
如果设置为"Last",则Insert和Update更改将被视为Upsert更改.
注意如果选择"Full",且同一行上有多处更改,则必须确保装载到目标数据库时的序列.
5如果将捕获模式设置为"Last",请输入"StageMode"属性,以指定要让组件将所有接收到的更改暂存在内存中还是IQ中.
注意对于32位网格引擎,建议将暂存模式设置为IQ.
6如果将"CaptureMode"设置为"Last"并将"StageMode"设置为IQ,请在"IQforStageModeOptions"字段中指定暂存的IQ配置.
7在"PortsOptions"字段中,指定输出端口详细信息.
请参见第116页上的"配置输出端口".
8指定任何其它可选属性.
请参见第116页上的"CDCProviderReplicationServer属性列出".
9创建复制.
请参见第115页上的"创建和删除复制".
第5章组件用户指南115设置复制定义选项1若要打开"CDCConfiguration"窗口,请单击"SourceTableOptions"图标.
2输入源数据库的连接详细信息.
3单击"Options"以选择要复制的源表.
4对要复制的每一列,选择"Replicate"选项.
5针对要标记为主列的列,选择"Key"选项.
必须选择一个或多个列作为键列,以防止在创建复制期间出错.
6单击"Save".
创建和删除复制创建复制创建复制包括以"Nomaterialization"作为实例化方法创建复制定义、复制连接、函数字符串和复制订阅.
它使ReplicationServer可以开始捕获源表数据更改.
1右键单击组件并选择"CreateReplication".
2确认源表与目标表同步并单击"Yes".
成功创建后,"Property"窗口中的"Replication"属性更改为"Created",且状态将写入存储库中.
删除复制删除复制包括删除复制定义、复制连接、函数字符串和复制订阅.
它使ReplicationServer可以停止捕获源表数据更改,并清除源表的所有未处理的数据更改.
1右键单击组件并选择"DropReplication".
2确认您正在删除复制.
单击"Yes".
"Property"窗口中的"Replication"属性更改为"Dropped",且状态将写入存储库中.
源组件116SybaseETL配置输出端口1单击"PortsOptions"图标,以打开"CDCProviderPorts"对话框.
2若要添加端口,请单击"AddPort"图标,并输入新端口的名称.
单击"OK".
注意无法在"CDCProviderPorts"对话框中更改端口名称.
若要更改端口名称,请转到"Design"窗口,右键单击端口,并选择"Description".
3若要从输出端口更改输出数据,请从"Function"下拉列表中选择选项,并单击"OK".
4若要删除端口,请选择该端口并单击"RemovePort"图标.
CDCProviderReplicationServer组件上至少必须有一个输出端口.
CDCProviderReplicationServer属性列出下表列出了该组件的必要属性和可选属性.
必要属性属性说明RepServerName指定要用于捕获数据更改的ReplicationServer.
创建复制之后,无法修改此属性.
如果要对其进行修改,请右键单击组件并选择"DropReplication".
RepDatabase在创建复制期间生成的对象名称.
此属性是只读的.
第5章组件用户指南117SourceTableOptions设置复制定义选项:Interface–标识要用于连接到主数据源的方法或驱动程序.
HostName–标识主数据源.
"HostName"列表中的选项取决于所选的接口.
UserandPassword–标识授权的数据库用户,并保护数据库免受未经授权的访问的侵害.
如果源数据库为ASE,则数据库用户需要"sa"或"dbo"权限,或者"replication_role".
Database–标识要用作数据源的数据库.
如果选择此选项,您还必须选择相应的接口,在某些情况下还必须指定相应的用户ID和口令.
Schema–标识要用作数据源的模式或所有者.
显示的对象相应地受到限制,新表将采用该模式创建.
Table–标识源表.
Replicate–标识要复制的列.
注意由于ETL不支持大对象(LOB)数据处理,因此不复制LOB类型的列.
Key–使用键标识列.
ReplicationServer和ETL使用键标识源表的每一行.
注意ReplicationServer不允许使用LOB类型的列作为键.
键值对于每一行都是唯一的,并且必须复制键列.
Size–标识列大小.
您可以将其更改为合适的值.
如果源数据库为Oracle,请输入ReplicationAgent详细信息:RepAgentHost–ReplicationAgent名称,此名称必须与ReplicationAgent中的"rs_source_ds"的配置值相同.
RepAgentDatabase–ReplicationAgent数据库名称,此名称必须与ReplicationAgent中的"rs_source_db"的配置值相同.
RepAgentUsernameandPassword–用于连接到ReplicationAgent的用户名和口令.
创建复制之后,无法修改此属性.
如果要对其进行修改,请右键单击组件并选择"DropReplication".
属性说明源组件118SybaseETL可选属性PortOptions指定每个输出端口的端口类型:PortName–指定输出端口名称.
Function–指定要从此端口发送的数据更改:Insert–发送插入更改.
Delete–发送删除更改.
Update–发送更新更改.
Upsert–发送插入和更新更改.
All–发送所有数据更改.
CaptureMode指定将所有接收的数据更改发送到下一个组件,还是仅将每一行上最后一个接收的数据更改发送到下一个组件.
缺省情况下,此属性被设置为"Last",该值适用于大多数增量装载.
Replication指示创建还是删除复制.
此属性的值由ETL生成且是只读的.
属性说明属性说明RepServerUserandPassword指定授权的ReplicationServer用户名和口令.
StageMode指定数据更改应暂存在内存中,还是暂存在IQ临时表中.
如果将捕获模式属性设置为"Last",请为暂存模式属性提供值.
注意对于32位网格引擎,建议将暂存模式设置为IQ.
IQforStageModeOptions指定用于暂存IQ的配置.
仅当捕获模式为"Last"时,且暂存模式为IQ时,才启用此属性.
Timeoutsecondsfornodata指定组件停止等待从ReplicationServer接收数据更改之前等待的时间(以秒为单位).
ReadBlockSize确定组件在单个步骤中检索的记录数.
第5章组件用户指南119AutoInitialLoad指定是否要让初始装载自动发生.
在传输源表数据更改之前,ETL必须执行初始装载,才能使源表数据与目标表数据同步,并创建复制对象以使ReplicationServer开始捕获数据更改.
注意由于ReplicationServer不支持对Oracle进行实例化,因此,如果源数据库为Oracle,则此属性不起作用.
执行或模拟项目时:如果选择此属性,而未创建复制,则ETL将创建复制定义、连接和函数字符串,并且将使用原子实例化方法创建订阅.
此实例化方法可锁定源表,直到所有的源表记录都被ReplicationServer作为事务中的插入操作进行捕获为止.
此后,模拟或执行功能将执行初始装载.
如果没有选择此属性,而且没有创建复制,则会看到一条错误消息.
如果选择了此属性,但执行或模拟失败,请右键单击组件,并选择"DropReplication".
尝试再次执行或模拟项目.
如果右键单击组件并选择"CreateReplication",则在选择此属性时,初始装载不会发生.
注意模拟项目时,如果选择此选项并且单击"ResetandStart"重新启动模拟,则CDCProviderSybaseReplicationServer组件不会第二次接收源表初始数据.
ReplicationServer仅会将初始数据向ETL推送一次.
OutputOldValue选择输出每个数据更改的旧列值.
创建复制之后,无法修改此属性.
如果要对其进行修改,请右键单击组件并选择"DropReplication".
Transactional由CDCProviderSybaseReplicationServer组件执行的所有工作(包括pre-SQL和post-SQL)均在单个数据库事务中执行,该事务在项目正常完成时提交.
如果此组件遇到错误,请选择此选项来回滚事务.
有关"PropagateRollback"属性的信息,请参见第189页上的"作业组件"和第17页上的"为项目和作业启用事务性".
属性说明转换组件120SybaseETL转换组件转换组件拥有输入端口和输出端口,并可对转换流中的数据应用特定转换.
SaveInterval指定ETL收到数据更改后,ReplicationServer应将这些数据更改保存的时间量(以分钟为单位).
缺省情况下,ETL接收每项数据更改之后,ReplicationServer就会放弃每项更改.
请设置此属性,让ReplicationServer在ETL接收数据更改之后将这些更改保存一段时间.
必须保存数据更改,因为项目或作业故障会导致目标表更改回滚(如果启用项目级事务性).
在此情况下,接收的所有源表数据更改都不会应用于目标表.
在随后执行中,以前的执行中未成功处理的数据更改(仍存在于ReplicationServer中)将连同所有新的更改被发送到CDCReplicationServerProvider组件.
这可以确保正确更新目标表.
如果保存时间间隔太短,则因运行失败项目而产生的某些数据更改不会发送到目标组件,这导致目标表与源表数据不同步.
如果保存时间间隔太长,则重复的数据更改将被发送到该组件,进而导致性能降低,并提高资源使用量.
属性说明组件说明CharacterMapper替换输入记录中的字符和字符串.
CharacterMapper可向所有选定属性应用替换映射.
CopySplitter将输入数据无条件地复制到每个输出端口.
DataCalculatorJavaScript对在输入端口与输出端口之间传递到该组件的每条记录执行转换.
DataSplitterJavaScript根据输入值拆分传入数据流.
SQLExecutor使用此组件可以针对数据库服务器执行多个自定义SQL语句之一.
SQLExecutor是独立组件,没有输入或输出端口.
第5章组件用户指南121CharacterMapperCharacterMapper是一种转换组件,用于替换输入记录中的字符和字符串.
CharacterMapper可向几乎所有的选定属性应用替换映射.
使用CharacterMapper可以替换字符或字符串,例如,将德语的变音符号()更改为ae或Unicode字符.
配置CharacterMapper组件1将CharacterMapper组件拖动到"Design"窗口.
2将CharacterMapper的输入端口链接到提供入站数据的组件的输出端口.
将CharacterMapper的输出端口链接到要将出站数据引导至的组件的输入端口.
您必须配置要将出站数据引导至的组件的输入端口结构.
3打开CharacterMapper组件窗口.
如有必要,请单击工具栏上的"Steptonextincomingdatabuffer"图标,以填充输入和输出内容.
4添加映射定义.
请参见第121页上的"创建新的映射定义".
使用CharacterMapper组件窗口使用CharacterMapper组件窗口,可为在输入端口与输出端口之间传递的数据定义映射规则.
CharacterMapper组件窗口包括以下内容:"CurrentInputRecord"窗格–显示当前位于输入端口的记录的列、行和内容.
"CurrentOutputRecord"窗格–显示出现在输出端口的当前记录的列、行和内容.
"Mappingdefinition"窗格–包括"From"列和"To"列.
创建新的映射定义1单击工具栏上的"InsertMapping"图标,或者在"MappingDefinition"窗格中的任意位置单击右键,然后选择"InsertMapping".
此时将为新的映射定义插入一个新行.
2在"From"列中输入要替换的字符组合,并在"To"列中输入要将其替换为的值.
请参见映射符号.
转换组件122SybaseETLCharacterMapper会应用规则,并将结果显示在"CurrentOutputRecord"窗格中.
若要编辑当前显示在"CurrentInputRecord"窗格中的记录,请在"CurrentInputPortContent"窗格中单击相应的行,然后进行所需的更改.
这样还将更新"CurrentOutputRecord"窗格中的值以及"CurrentOutportPort"窗格中的选定行.
若要删除映射定义,请右键单击相应的映射定义,然后选择"RemoveMapping".
若要更改映射定义的顺序,请选择工具栏上的"Moverowup"和"Moverowdown"图标.
3CharacterMapper可应用映射,并在您编写规则后立即更新输出结果.
单击工具栏上的"Enableautorefreshofoutputvalues"图标,可切换这种自动同步功能.
注意CharacterMapper将对所有行和所有列应用映射.
若要将某些列排除在字符映射之外,请在"Properties"窗口中单击"Exclude",然后选择要排除的列.
映射符号"From"和"To"值可以包含这些符号中的任何字符组合:注意%表示相应的字符代码.
类型语法示例(@)字符%@ASCII十进制ASCII十六进制Unicode十进制Unicode十六进制第5章组件用户指南123这些符号还允许使用要映射的特殊字符.
每个支持符号的示例均包括:重用映射定义可将字符映射定义保存到文件,以便可在其它项目中重复使用这些定义.
请参见导出映射定义和导入映射定义.
导出映射定义1在CharacterMapper组件窗口中,单击工具栏上的"Exportcharactermapping"图标.
2提供文件名,然后单击"Save".
CharacterMapper保存的文件不带扩展名.
导入映射定义1在CharacterMapper组件窗口中,单击工具栏上的"Importcharactermapping"图标.
2选择要导入的文件,然后单击"Open".
CharacterMapper演示SybaseETL包括CharacterMapper组件的演示.
这些演示可用作Flash演示,而且可用作演示存储库中的样本项目.
若要运行Flash演示,请选择"Help"|"Demonstrations"|"Transform"|"CharacterMapper".
若要访问样本项目,请在"Navigator"中选择"Repository"|"TRANSFORMER.
transformer.
Repository"|"Projects".
然后选择"DemoCharacterMapper".
映射源目标变音符号国际化Ae关键字转换kundecustomer从字符串中删除CRLF或用欧元货币符号替换里拉货币符号或或转换组件124SybaseETLCopySplitterCopySplitter组件将输入数据无条件复制到每个输出端口.
与DataSplitter不同,CopySplitter不包括任何端口表达式.
使用CopySplitter可以不必调用JavaScript,还可以降低条件求值成本,进而提高性能.
缺省情况下,CopySplitter组件具有两个输出端口.
配置CopySplitter组件1将CopySplitter组件拖至"Design"窗口上.
2将CopySplitter的输入端口链接到提供入站数据的组件的输出端口.
3如果需要,请创建其它输出端口.
请参见"添加新输出端口".
4将CopySplitter的输出端口链接到要将出站数据引导至的组件的输入端口.
管理CopySplitter输出端口添加新输出端口虽然该组件配置有两个输出端口,但是,您可以创建其它输出端口.
新端口是通过名称来标识的.
1右键单击该组件,并选择"AddOutputPort".
2为新的输出端口输入名称.
单击"OK".
删除输出端口1右键单击要删除的端口并选择"RemovePort".
如果将输出端口链接到另一个组件,则"RemovePort"将被禁用.
在删除该端口之前,必须删除链接.
注意不能删除所有端口.
该组件必须至少拥有两个输出端口.
管理端口结构有关如何管理端口结构和端口属性的信息,请参见第84页上的"管理端口结构".
第5章组件用户指南125DataCalculatorJavaScriptDataCalculatorJavaScript是一种转换组件,用于定义对输入端口与输出端口之间传递的记录应用转换的规则.
例如,可以使用DataCalculatorJavaScript定义转换端口属性的规则或添加创建新属性的规则.
DataCalculator还可以执行属性级查找.
您可以提供特定查找端口的查找数据.
如果不执行任何查找,DataCalculatorJavaScript不影响模拟序列.
如果执行查找,系统先将所有数据读入查找端口,然后处理主端口的数据.
配置DataCalculatorJavaScript组件1将DataCalculatorJavaScript组件拖动到"Design"窗口.
2如有必要,请将DataCalculator的输入端口链接到提供入站数据的组件的输出端口.
3如果DataCalculator组件窗口处于打开状态,请单击"Save"以关闭该窗口.
4在"Design"窗口中,右键单击DataCalculator的输出端口,然后依次选择"AssignStructure"和下列选项之一:5在"Design"窗口中双击"DataCalculatorJavaScript",或者在"Properties"窗口中单击"Rule"图标.
6选择下列选项之一:选项操作IN创建与DataCalculator的输入端口结构相匹配的输出端口结构.
CopyStructure打开一个窗口,您可以在其中向输出端口应用现有的端口结构.
选项操作Yes按顺序创建缺省映射.
选择此选项可创建一组转换规则,这些规则用于将输入端口中的每个属性映射到输出端口中的相应属性.
No自行定义输入端口到输出端口的映射.
选择此选项可将输入端口中的各属性手动映射到输出端口中的相应属性.
请参见第126页上的"映射端口属性".
转换组件126SybaseETL使用组件窗口DataCalculator组件窗口提供了数据流的表格视图和图形视图.
您还可以使用此窗口映射端口属性和定义转换规则.
表格视图表格视图显示了当前的记录结构、端口属性和转换规则.
其中包括以下内容:"CurrentInputRecord"窗格–标识输入端口的当前记录中的每个属性及其属性值.
所有的输入端口属性都包括"IN.
"前缀.
"TransformationrulesandCurrentOutputRecord"窗格–包括与每个转换规则对应的列和行,以及与每个输出端口属性对应的列和行.
缺省的转换规则可将每个输入端口属性映射到相应的输出端口属性.
缺省情况下,输出端口值反映输入端口值.
更改属性值或转换规则时,将会更改输出端口值.
如果转换规则是函数表达式,则必须仅在一行中输入该规则.
缺省情况下,将返回值赋予相应的输出端口属性.
但是,如果输入了多行函数表达式,则文本将被解释为脚本,并且您必须设置输出端口属性值.
"InputPortContent"窗格–显示输入端口当前可用的记录集.
"OutputPortContent"窗格–显示输出端口当前可用的记录集.
图形视图图形视图显示了输入端口属性与输出端口属性之间的当前映射.
"InputPortContent"窗格–显示输入端口当前可用的记录集.
"OutputPortContent"窗格–显示输出端口当前可用的记录集.
注意向IN.
attribute应用转换规则之后,将不再显示IN.
attribute与OUT.
attribute之间的映射行.
映射端口属性虽然作为缺省选项,DataCalculator组件可以在输入端口与输出端口之间创建列到列的映射,但是,可能有时需要您分别映射端口属性.
若要创建自己的映射,请使用图形视图.
1在DataCalculator组件窗口中,单击"Graph"选项卡.
第5章组件用户指南1272采用以下方式之一映射输入端口和输出端口:选择菜单栏中的"Mapping",然后选择以下预定义映射序列之一:CreatemappingbyOrder–按顺序映射输入端口和输出端口的端口属性.
注意如果属性数目不同,则说明部分端口属性未映射.
CreatemappingbyName–按照名称映射输入端口和输出端口的端口属性.
CreatemappingbyNameCaseSensitive–按照区分大小写的名称映射输入端口和输出端口的端口属性.
Createmappingbyprefix–按照名称(忽略指定的前缀)映射输入端口和输出端口的端口属性.
CreatemappingbyBestMatch–映射可能相似的输入端口和输出端口的端口属性.
分别连接输入端口和输出端口的各属性.
现在便可使用该组件了,它可将记录从输入端口转发到输出端口.
显示转换结果DataCalculator可以立即显示转换规则的结果,允许您验证传入数据、测试转换规则,并查看这些规则对数据输出产生的影响.
缺省情况下,输出端口值反映输入端口值.
手动更改输入端接口属性值仅影响输入端口或输出端口缓冲区的数据,允许您测试转换规则,并查看当前输出记录的结果.
这是用于创建针对转换规则的测试案例的一种便捷方式.
使用"TransformationRule"列,可以添加、修改或删除转换规则.
您还可以通过更改当前属性输入字段来编辑单行函数.
有关创建复杂过程转换的信息,请参见第62页上的"使用JavaScript编辑器和调试程序".
注意图形视图可镜像实际端口结构.
您不能在图形视图中添加或删除属性.
转换组件128SybaseETL管理转换规则若要添加转换规则,请在"TransformationRule"或"CurrentOutputPort"列中的任意位置单击鼠标右键,并选择"Insert".
现在,便可使用添加的规则执行进一步的赋值或计算.
若要删除转换规则,请右键单击"TransformationRule"列中的某行,然后选择"Remove".
若要更改转换规则的顺序,请右键单击"TransformationRule"列中的该行,然后选择"Up"或"Down".
若要添加缺少的输出属性,请单击"Mapping",然后选择"Addmissingoutputattributes".
转换规则是按顺序处理的.
首先处理的是列表中的第一个转换规则.
模拟DataCalculatorDataCalculator的设计目的为,使您可在数据于整个转换规则中移动时看到对数据所应用的更改.
您会发现这是很有用的,例如可以了解更改转换规则对传出数据的影响.
根据"Auto-Synchronization"按钮的状态,转换规则将在输入之后立即应用于整个输入端口记录集.
Togglingautosynchronization–自动同步立即将对转换规则所做的全部更改应用于输入端口的当前记录集.
注意如果禁用"Auto-Synchronization",可以通过选择"Step"选项手动触发对输入端口数据的处理.
单击工具栏上的"Step"图标,向输入端口的当前所有记录手动应用所有转换规则.
提取其它记录集–通过单击工具栏上的"Stepthroughthenextincomingdatabuffer"图标.
若要逐条处理输入端口的记录–单击工具栏上的相应记录控件.
单击"Navigate",然后选择相应选项.
从"InputPortContent"列表中选择相应记录.
第5章组件用户指南129搜索转换规则中的关键字–通过单击工具栏上的"SearchtheContentofTransformationRules"图标注意"CurrentInputRecord"区域中显示的值将随着当前记录的更改而更新.
突出显示null值和空值–通过单击工具栏上的"HighlightNULL-ValuesandEmptyValues"图标.
在DataCalculator中使用查找DataCalculator可执行属性级查找.
您必须输入特定查找端口的查找数据.
添加查找端口若要向DataCalculator添加查找端口,请将数据提供组件的输出端口直接连接到DataCalculator组件(不是端口).
查找端口是以自动方式创建和连接的.
或者,右键单击DataCalculator,然后选择"AddInputPort".
将数据提供组件的输出端口与新端口相连.
您可以添加数目不受限制的查找端口.
准备查找数据每个查找端口必须至少拥有两个属性.
第一个属性代表键.
其它所有属性代表返回值.
若要查找复合键,请并置前一组件中的键值,并在用于查找的键表达式中使用同类并置.
设置一般查找选项使用LookupOptions属性可对查找进行配置.
"Properties"窗口显示了所有查找端口及当前选项值的列表.
LookupName–从关联端口继承,并且不能在此处更改.
若要更改端口的名称,请从端口菜单中选择"Description".
LookupSize–若要优化内存分配和查找性能,请输入查找记录的估计数.
请参见第136页上的"DBLookup".
LookupEmpty/Null–空值和null值通常作为"unknown"键处理,因而返回缺省查找值.
如果空值或null值是对查找有效的键,则可通过激活此选项强制查找与这些键对应的值.
转换组件130SybaseETL构建查找规则若要设置查找规则,请在DataCalculator窗口中单击"Tabular"选项卡.
如果查找端口可用,则还会显示一个"Lookup"列.
对于每项查找规则,请提供:KeyExpression–要在查找列表的第一列中搜索的值.
输入键表达式(例如IN.
PR_ID)作为转换规则.
ReturnValue–由于查找列表可以包含多个返回值列,您必须指定要返回的值(如果找到了键).
从"Lookup"列的弹出菜单中选择关联的端口属性.
例如:LOOKUP1>>LOOKUP1.
PR_NAME.
注意虽然返回值是按照名称选择并显示的,但是,查找内部使用了列号.
这意味着,只要修改了查找端口结构,就必须检查查找规则,特别是在添加或删除属性之后更是如此.
OutputVariable–将查找返回值赋予此变量.
您可以从"OutputPort"列中选择一个变量(例如OUT>>OUT.
PR_NAME).
(可选)DefaultExpression–如果找不到给定键值,则查找返回Null.
若要返回其它缺省值,请在"LookupOptions"窗口中输入一个表达式.
若要打开"LookupOption"窗口,请在"TransformationRulesandCurrentOutputRecord"面板中单击"Lookup"列中的图标.
DataCalculatorJavaScript演示SybaseETL包括DataCalculator组件的几个演示.
这些演示可用作Flash演示,而且可用作演示存储库中的样本项目.
若要运行Flash演示,请选择"Help"|"Demonstrations"|"Transform"|"DataCalculator-JavaScript".
若要访问样本项目,请在"Navigator"中选择"Repository"|"TRANSFORMER.
transformer.
Repository"|"Projects".
对于不包含查找的演示,请选择:DemoTransferU.
S.
ProductsDemoTransferGermanProductsDemoDataCalculator第5章组件用户指南131对于包含查找的演示,请选择:DemoTransferGermanCustomersDemoTransferGermanSalesDemoTransferU.
S.
CustomersDataSplitterJavaScript使用DataSplitterJavaScript组件,可以轻松地过滤和分配输入数据.
配置DataSplitterJavaScript组件1将DataSplitterJavaScript组件拖动到"Design"窗口.
2将DataSplitter输入端口链接到提供入站数据的组件的输出端口.
3将DataSplitter输出端口链接到要将出站数据引导至的组件的输入端口.
4如果要让端口条件表现出似乎是互斥的情况,请选择"MutuallyExclusiveRules".
如果选择此选项,则将根据用户指定的顺序对端口求值,而不是根据端口在组件上显示的顺序进行求值.
如果将条件定义为互斥,则拆分器会将给定记录写入0或1输出端口.
具有匹配条件的第一个输出端口将接收输入记录.
不会对后续端口条件进行求值.
如果条件不匹配,则不会将记录写入到任何输出端口.
注意互斥端口条件始终按照与每个端口条件关联的序列号指定的顺序进行求值.
5双击DataSplitterJavaScript组件.
6添加要用于引导数据流的条件:a双击要对其添加条件的端口.
或者,单击端口上的"Editcondition"图标,或右键单击端口并选择"Editcondition".
b在"Condition"窗口中,针对每列定义要应用的条件.
c单击"Save".
转换组件132SybaseETL拆分入站数据向项目添加DataSplitter组件时,将打开一个组件窗口,其中会显示入站数据属性和输出端口条件.
DataSplitter组件配置有两个输出端口.
这两个端口的条件均预先设置为1.
因为该条件总是为true,所以,无论输入端口的当前值是什么,DataSplitter都会将所有的传入记录都复制到这两个输出端口.
输入端口的数据缓冲区最初为空,仅显示入站数据属性.
输出端口结构与输入端口结构相匹配.
若要填充输入属性,请单击工具栏上的"Steptothenextinputbuffer"图标.
此时,输入数据将显示在该组件窗口的上部.
由于输出端口与输入端口共享同一种端口结构,因此,在窗口的上部选择任何记录时,将会使输出端口指示该记录是否满足端口条件.
如果记录满足端口条件,则输出端口的颜色为绿色.
如果记录不满足端口条件,则输出端口的颜色改为红色.
包含端口条件如果拆分器模式为包含模式,也就是说,您尚未定义互斥端口条件,则将根据每个端口条件来测试每个输入记录.
对于每个匹配的端口条件,会将当前记录的副本写入输出端口.
排斥端口条件如果您定义了互斥端口条件,则将根据用户指定的顺序对端口求值,而不是根据端口在组件上显示的顺序进行求值.
条件首先按照从第一个到最后一个的顺序进行求值.
具有匹配条件的第一个输出端口将接收输入记录.
不会对后续端口条件进行求值.
通过单击"Editevaluationorder"图标,然后在"Evaluationorder"窗口中交换行,可以更改条件的求值顺序.
若要将求值顺序重置为缺省设置,请单击"Resetevaluationorder"图标.
注意DataSplitter转发到输出端口的记录数可能与传入的记录数不同.
如果端口条件未定义为互斥,则当单个记录与多个端口条件匹配时,该记录在所有这些端口上均可用.
如果记录与任何条件都不匹配,则会将其从数据流中删除.
对于互斥端口条件,单个输入记录只能与一个输出端口匹配.
不匹配的记录不会被写入任何输出端口.
自定义端口条件可以为每个端口分配条件.
条件由一个或多个表达式组成.
多个表达式可通过运算符并置.
对条件进行求值时,其结果是True(1)或False(0).
第5章组件用户指南133修改端口条件1双击相应组件.
在组件窗口中右键单击端口,然后选择"EditCondition".
2创建要应用到端口的条件.
您可以:在"Condition"窗口的文本区域中手动输入条件.
将要添加到条件中的变量和函数从左窗格拖放到文本区域.
"Variables"选项卡列出了可以使用的所有变量,而"Functions"选项卡列出了可添加到条件中的所有可用函数和运算符.
右键单击文本区域,然后选择要添加到条件中的变量.
添加新输出端口虽然该组件配置有两个输出端口,但是,您可以创建其它输出端口.
新端口是通过名称来标识的.
1单击端口工具栏上的"Addnewport"图标.
2为新的输出端口输入名称.
单击"OK".
删除输出端口1选择要删除的端口.
2单击端口工具栏上的"Removeselectedport"图标.
或者,右键单击端口并选择"Delete".
特定端口条件DataSplitter分配记录的方式由端口条件决定.
在非排斥模式下,可以具有多个有条件的端口:1–True.
所有记录都被转发到此端口,包括与其它任何端口条件相匹配的记录.
(空)–与其它任何条件均不匹配的所有记录都被转发到此端口.
转换组件134SybaseETL在排斥模式下,可以具有单个有条件的端口:1–True.
与任何前面的端口条件均不匹配的所有记录都被转发到此端口.
注意此条件需要作为求值顺序中的最后一个条件.
条件为空的端口无效.
DataSplitterJavaScript演示SybaseETL包括DataSplitter组件的几个演示.
这些演示可用作Flash演示,而且可用作演示存储库中的样本项目.
若要运行Flash演示,请选择"Help"|"Demonstrations"|"Transform"|"DataSplitter-JavaScript".
若要访问样本项目,请在"Navigator"中选择"Repository"|"TRANSFORMER.
transformer.
Repository"|"Projects".
然后选择:DemoDataSplitterDemoTextDataSinkDelimited/Fixed注意演示不显示互斥的端口条件功能.
SQLExecutor使用SQLExecutor组件,可以针对数据库服务器执行一个或多个自定义SQL语句.
SQLExecutor是独立组件,没有输入端口或输出端口.
可以在项目中将SQLExecutor与其它组件分开放置,也可以将其放置在包含一个或多个SQLExecutor组件的单个项目中.
例如,您可以使用SQLExecutor执行以下操作:采用IQ可支持的格式将数据从源表装载到文本文件(如果源表允许通过使用SQL语句将数据提取到文件中).
使用LoadTable命令,在单个事务中将数据从文本文件装载到目标IQ数据库中.
第5章组件用户指南135配置SQLExecutor组件1将SQLExecutor组件拖至"Design"窗口上.
2在"Properties"窗口中,指定该组件的属性.
请参见下面的SQLExecutor属性列表.
SQLExecutor属性列表下表列出了SQLExecutor组件的必要属性和可选属性.
必要属性可选属性属性说明Interface标识用于连接到数据源的方法或驱动程序.
HostName标识数据源.
"HostName"列表中显示的选项取决于所选的接口.
ExecuteScript指定要执行的自定义SQL脚本.
属性说明UserandPassword标识获得授权的数据库用户,并保护数据库免受未经授权的访问的侵害.
ExecuteSuccessScript指定要执行的自定义SQL(如果SQLExecutor成功运行).
ExecuteErrorScript指定要执行的自定义SQL(如果SQLExecutor失败).
PreProcessingSQL创建在组件初始化过程中运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
PostProcessingSQL创建在所有组件执行后运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
Database标识要用作数据源的数据库.
如果选择此选项,您还必须选择相应的接口,在某些情况下还必须指定相应的用户ID和口令.
Schema标识要用作数据源的模式或所有者.
显示的对象相应地受到限制,新表将采用您指定的模式创建.
DatabaseOptions设置用于覆盖性能缺省值并控制某些事务的行为的选项.
请参见第87页上的"数据库连接设置".
查找组件136SybaseETL查找组件查找操作用于在包含键和值对列表的查找表中查找与键对应的值.
可在项目执行过程中对静态查找表进行高速缓存,也可在不进行高速缓存的情况下执行动态查找.
DBLookupDBLookup组件可查找数据库中的值.
查找数据由正好返回两列(查找键和查找值)的查询的结果集来指定.
您可以将查找返回的值(查找值)赋予当前记录中的任何属性.
在项目执行过程中,DBLookup将对查找表进行高速缓存.
在项目执行过程中对基础数据库应用的更改不会影响查找结果.
Transactional由SQLExecutor组件执行的所有工作(包括pre-SQL和post-SQL)均在单个数据库事务中执行,该事务在项目正常完成时提交.
如果此组件遇到错误,请选择此选项来回滚事务.
有关"PropagateRollback"属性的信息,请参见第189页上的"作业组件"和第17页上的"为项目和作业启用事务性".
属性说明组件说明DBLookup查找数据库中的值.
查找数据由正好返回两列的查询的结果集来指定:查找键和查找值.
您可以将查找返回的值(查找值)赋予当前记录中的任何属性.
在项目执行过程中,将对查找表进行高速缓存.
在项目执行过程中对基础数据库应用的更改不会影响查找结果.
DBLookupDynamic通过在查询WHERE子句中引用键值,执行动态查找.
"DBLookupDynamic"不对查找信息进行高速缓存,它针对通过组件的每个记录执行一次SQL查找.
在项目执行过程中,查找表的数据可能会被并发数据库用户(甚至是同一项目内的用户)修改.
在这种情况下,执行非动态数据库查找时可能会搜索无效数据.
使用"DBLookupDynamic"可确保找到当前值.
第5章组件用户指南137配置DBLookup组件1将DBLookup组件拖动到"Design"窗口.
2在"Design"窗口中,将DBLookup的输入端口与提供入站数据的组件的输出端口相连.
3在"Properties"窗口中,指定有效的接口和主机名.
有关特定字段要求,请参见第137页上的"DBLookup属性列表".
4指定含有要查找的值的"KeyAttribute",以及要取得查找结果值的"ValueAttribute".
通过为二者选择同一属性,可以替换值.
5在"Properties"窗口中,单击"Query"图标以打开"Query"窗口.
6在"Query"窗口中,创建并保存用来检索查找数据的查询.
将查询设计为从源表返回查找键和查找值.
示例假定您想将德国产品所用的产品编号替换为在美国使用的产品编号.
德国产品位于表PRODUKTE(PR_NUMMER,PR_NAME,PR_PREIS)中.
DBLookup组件的输入端口包含以上三个属性.
用于查找美国产品编号的表是LOOKUP_PRODUCTS(SOURCE,DESTINATION).
SOURCE列包含德国产品编号,而DESTINATION列包含美国产品编号.
如果在LOOKUP_PRODUCTS中找不到与德国的PR_NUMMER对应的值,则当前PR_NUMMER将被字符串"INVALID"所替换.
如果查找成功,将会使用相应的美国产品编号替换德国产品编号.
若要针对本示例设置DBLookup组件,请选择:KeyAttribute–PR_NUMMERValueAttribute–PR_NUMMERDefaultValue–INVALIDQuery–selectSOURCE,DESTINATIONFROMLOOKUP_PRODUCTSDBLookup属性列表DBLookup属性列表可标识您在"DatabaseConfiguration"窗口中定义的连接参数和其它属性.
查找组件138SybaseETL必要属性可选属性属性说明KeyAttribute从输入端口属性列表中选择一个"KeyAttribute".
此属性与查找表的第一列对应.
ValueAttribute选择用于接收查找从值属性列表中找到的值的属性.
返回的查找值将覆盖现有的任何值.
"KeyAttribute"和"ValueAttribute"可能引用记录结构的同一个属性,因此,键可以被其相应的值所覆盖.
Interface指定要用于连接到数据源的方法或驱动程序.
HostName标识数据源.
"HostName"列表中显示的选项取决于所选的接口.
Query创建从数据源检索信息的查询.
使用"Query"窗口创建简单查询,或单击"QueryDesigner"图标打开QueryDesigner进行创建.
请参见第47页上的"QueryDesigner".
属性说明UserandPassword标识获得授权的数据库用户,并保护数据库免受未经授权的访问的侵害.
DefaultValue将缺省值赋予值属性.
如果DBLookup在查找表中找不到键值,将会使用该值.
UseKeyValue将键值而不是缺省值赋予值属性(如果查找失败).
LookupEmpty/NullKeys查找空或NULL键值.
否则,将应用选定的缺省方法.
LookupSize指定查找记录的估计数,以优化内存分配和查找性能.
Database标识要用作数据源的数据库.
如果选择此选项,您还必须选择相应的接口,在某些情况下还必须指定相应的用户ID和口令.
Schema标识要用作数据源的模式/所有者.
显示的对象相应地受到限制,新表将采用该模式创建.
StandardizeDataFormat将传入的DATE和NUMBER信息转换为SybaseETL可以在支持不同格式的系统之间移动的标准格式.
日期将转换为包括年、月、日、小时、分钟、秒钟和秒钟分数的格式:YYYY-MM-DDhh:mm:ss.
s.
例如:2005-12-0116:40:59.
123数字转换后使用句点(".
")作为小数分隔符.
第5章组件用户指南139DBLookup演示SybaseETL包括DBLookup组件的几个演示.
这些演示可用作Flash演示,而且可用作演示存储库中的样本项目.
若要运行Flash演示,请选择"Help"|"Demonstrations"|"Lookup"|"DBLookup".
若要访问样本项目,请在"Navigator"中选择"Repository"|"TRANSFORMER.
transformer.
Repository"|"Projects".
然后选择:DemoDBLookupDemoTransferGermanProductsDBLookupDynamicDBLookupDynamic组件通过在查询WHERE子句中引用键值来执行动态查找.
与"DBLookup"组件不同,"DBLookupDynamic"不对查找信息进行高速缓存,它针对通过组件的每个记录执行一次SQL查找.
在项目执行过程中,查找表的数据可能会被并发数据库用户(甚至是同一项目内的用户)修改.
在这种情况下,执行非动态数据库查找时可能会搜索无效数据.
使用"DBLookupDynamic"可确保找到当前值.
对于本组件,另外一种典型用途就是超出本地计算机上可用内存量的查找表.
DBLookupDynamic组件的查找执行速度较为缓慢,但不需要高速缓存内存,因为查找是逐记录执行的.
配置DBLookupDynamic组件1将DBLookupDynamic组件拖动到"Design"窗口.
2在"Design"窗口中,将DBLookup的输入端口与提供入站数据的组件的输出端口相连.
3在"Properties"窗口中,指定接口和主机名.
有关特定字段要求,请参见第141页上的"DBLookupDynamic属性列表".
DatabaseOptions设置用于覆盖性能缺省值并控制某些事务的行为的选项.
请参见第87页上的"数据库连接设置".
属性说明查找组件140SybaseETL4指定含有要查找的值的"KeyAttribute",以及要取得查找结果值的"ValueAttribute".
通过为二者选择同一属性,可以替换值.
5指定设计和测试查找查询时要使用的查找键值.
6单击"Query"图标以打开"Query"窗口.
7在"Query"窗口中,创建并保存用来检索查找数据的查询.
将查询设计为从源表返回查找值.
使用查询的where子句中的预定义变量查找作为查找键的占位符.
请参见第61页上的"使用SBN表达式".
重置缺省查找键值在模拟期间,会将来自传入数据流的键属性值赋予预定义的变量查找.
将指定的查找键值重新赋予此变量:1右键单击"DBLookupDynamic"组件.
2选择"ResetLookupKeyvalue".
示例假定您想将德国产品所用的产品编号替换为在美国使用的产品编号.
德国产品位于表PRODUKTE(PR_NUMMER,PR_NAME,PR_PREIS)中.
因此,DBLookupDynamic组件的输入端口包含这三个属性.
用于查找美国产品编号的表为LOOKUP_PRODUCTS(SOURCE,DESTINATION)表.
SOURCE列包含德国产品编号,而DESTINATION列包含美国产品编号.
如果在LOOKUP_PRODUCTS中找不到与德国的PR_NUMMER对应的值,则当前PR_NUMMER将被字符串"INVALID"所替换.
如果查找成功,将会使用相应的美国产品编号替换德国产品编号.
若要针对本示例设置DBLookupDynamic组件,请选择:KeyAttribute–PR_NUMMERValueAttribute–PR_NUMMERDefaultValue–INVALIDQuery–selectDESTINATIONFROMLOOKUP_PRODUCTS,whereSOURCE='[Lookup]'第5章组件用户指南141DBLookupDynamic属性列表下表列出了DBLookupDynamic组件的必要属性和可选属性.
必要属性可选属性属性说明KeyAttribute从输入端口属性列表中选择一个键属性.
此属性将填充占位符变量查找.
ValueAttribute选择用于接收查找从值属性列表中找到的值的属性.
返回的查找值将覆盖现有的任何值.
"KeyAttribute"和"ValueAttribute"可能引用记录结构的同一个属性,因此,键可以被其相应的值所覆盖.
Interface指定要用于连接到数据源的方法或驱动程序.
HostName标识数据源.
"HostName"列表中显示的选项取决于所选的接口.
Query创建从数据源检索信息的查询.
使用"Query"窗口创建简单查询,或单击"QueryDesigner"图标打开QueryDesigner进行创建.
请参见第47页上的"QueryDesigner".
属性说明UserandPassword标识获得授权的数据库用户,并保护数据库免受未经授权的访问的侵害.
DefaultValue将缺省值赋予值属性(如果未在查找表中找到键值).
UseKeyValue将键值而不是缺省值赋予值属性(如果查找失败).
LookupEmpty/NullKeys查找空或NULL键值.
如果未选择该选项,将应用缺省方法.
LookupKeyValue指定查找键的值,该值用于填充在设计时测试查询的查找变量Database标识要用作数据源的数据库.
如果选择此选项,您还必须选择相应的接口,在某些情况下还必须指定相应的用户ID和口令.
Schema标识要用作数据源的模式/所有者.
显示的对象相应地受到限制,新表将采用该模式创建.
Staging组件142SybaseETLDBLookupDynamic演示SybaseETL包括DBLookupDynamic组件的演示.
这些演示可用作Flash演示,而且可用作演示存储库中的样本项目.
若要运行Flash演示,请选择"Help"|"Demonstrations"|"Lookup"|"DBLookup–Dynamic".
若要访问样本项目,请在"Navigator"中选择"Repository"|"TRANSFORMER.
transformer.
Repository"|"Projects",然后选择"DemoDBLookupDynamic".
Staging组件Staging组件至少拥有一个输入端口和一个输出端口,可对转换流中的数据应用特定转换.
DBStagingDBStaging是一种Staging组件,用于将传入数据流装载到单个暂存区域中.
DBStaging可为所有传入数据提供缓冲,然后创建表示给定select语句结果集的传出数据流.
StandardizeDataFormat将传入的DATE和NUMBER信息转换为SybaseETL可以在支持不同格式的系统之间移动的标准格式.
日期将转换为包括年、月、日、小时、分钟、秒钟和秒钟分数的格式:YYYY-MM-DDhh:mm:ss.
s.
例如,2005-12-0116:40:59.
123数字转换后使用句点(".
")作为小数分隔符.
DatabaseOptions设置用于覆盖性能缺省值并控制某些事务的行为的选项.
请参见第87页上的"数据库连接设置".
属性说明组件说明DBStaging将传入数据流装载到单个暂存区域中.
DBStaging可为所有传入数据提供缓冲,然后创建表示给定select语句结果集的传出数据流.
第5章组件用户指南143您可以根据前一组件的输出端口结构创建staging表.
虽然很多转换组件都是基于逐记录处理的原理设计的,但是staging组件的工作可以分为下面两个阶段:阶段1–从前面的组件收集所有记录.
阶段2–运行查询并以给定大小块的形式提供结果集的记录.
通过在Query属性中使用ORDERBY或GROUPBY子句,可以使用staging组件执行排序或聚合操作.
异构源中的数据可以通过装载到staging数据库的多个表中的方式进行连接.
您还可以使用DBStaging组件创建转换的中间图像,以供进一步检查或处理.
注意在模拟中,DBStaging组件首先从原始数据源检索所有数据,然后用作后续组件的新数据源.
该组件允许覆盖原始源组件的"ReadBlockSize"值.
配置DBStaging组件1将DBStaging组件拖动到"Design"窗口.
2将DBStaging的输入端口连接到提供入站数据的组件.
若要向DBStaging组件添加输入流,可以在该staging组件上断开与数据提供组件的连接.
此时,该组件将自动创建端口.
3在"Properties"窗口中,将"ConnectionParameters"添加到要在其中添加staging表的数据库.
指定用于创建连接的有效接口和主机名.
有关特定字段要求,请参见第144页上的"DBStaging属性列表".
注意如果要使用的staging表已经存在,请跳过下一步.
4在"Design"窗口中,右键单击DBStaging组件,然后选择以下选项之一:CreateStagingTablefromInput–选择相应的端口结构,然后单击"OK".
为新表输入名称.
CreateStagingTablefromPort–为新表输入名称,然后选择相应的端口结构.
单击"Apply".
5在"Addtable"窗口中验证新表信息是否正确,然后单击"Create".
6在"Properties"窗口中,单击"StageOptions"图标.
Staging组件144SybaseETL使用"StageOptions"窗口,可以为每个staging表定义"TruncateTable"和"WriteBlockSize"选项.
7在"Properties"窗口中,单击"Query"图标,并创建一个查询以staging区域中选择数据.
根据数据库更改更新端口结构请参见第85页上的"根据数据库更改更新端口结构".
DBStaging属性列表下表列出了DataStaging组件的必要属性和可选属性.
必要属性可选属性属性说明Interface指定要用于连接到数据源的方法或驱动程序.
HostName标识数据源.
"HostName"列表中显示的选项取决于所选的接口.
StageOptions设置staging选项.
Query创建从数据源检索信息的查询.
使用"Query"窗口创建简单查询,或单击"QueryDesigner"图标打开QueryDesigner进行创建.
请参见第47页上的"QueryDesigner".
属性说明UserandPassword标识获得授权的数据库用户,并保护数据库免受未经授权的访问的侵害.
ReadBlockSize确定组件在单个步骤中检索的记录数.
PreProcessingSQL创建在组件初始化过程中运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
PreOutputProcessingSQL指定其它SQL脚本,将来自转换流的所有数据装载到与输入端口关联的表中之后,且在检索查询结果集之前,执行该脚本.
在创建输出之前,可以使用此属性来修改或更新staging表.
Post-processingSQL创建在所有组件执行后运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
第5章组件用户指南145Database标识要用作数据源的数据库.
如果选择此选项,您还必须选择相应的接口,在某些情况下还必须指定相应的用户ID和口令.
Schema标识要用作数据源的模式/所有者.
显示的对象相应地受到限制,新表将采用该模式创建.
StandardizeDataFormat将传入的DATE和NUMBER信息转换为SybaseETL可以在支持不同格式的系统之间移动的标准格式.
日期将转换为包括年、月、日、小时、分钟、秒钟和秒钟分数的格式:YYYY-MM-DDhh:mm:ss.
s.
例如:2005-12-0116:40:59.
123数字转换后使用句点(".
")作为小数分隔符.
IQLockTableinExclusiveMode锁定目标表,并防止并发事务更新该表.
当应用排它表锁时,其它任何事务均不能对被锁定的表执行查询或任何更新.
"IQLockTableinExclusiveMode"选项还会对SybaseIQ中装载有相同表的多个项目进行排队.
WaitTimeforIQLockTable指定项目在获取Exclusive锁之前应等待的最大阻塞时间.
请以hh:nn:ss.
sss格式指定时间参数.
如果未输入时间参数,服务器将无限期地等待,直到Exclusive锁可用或发生中断为止.
如果指定"00:00:00.
000"作为时间参数,则会在项目启动时立即获取Exclusive锁.
属性说明Staging组件146SybaseETLLoadStagePath指定数据文件路径.
LoadStage文件与IQServer必须位于同一台计算机上.
使用SybaseIQ数据库时,如果指定"LoadStagePath",则组件将使用LOADTABLE语句,而不是使用SQL语句.
这会使性能更快.
注意在对具有ODBC接口的SybaseIQ15.
0staging数据库启用客户端装载时,您不需要指定"LoadStagePath".
IQ服务器将自动使用其缺省LOADTABLE语句将记录从位于远程主机上的文件添加到SybaseIQ表中.
若要创建管道,请将pipe://指定为LoadStagePath参数.
如果"LoadStagePath"为空,则不使用管道.
如果使用UNIX或Linux中的命名管道,则ETLServer和IQServer必须位于同一台计算机上.
对于Windows,这并不是必需的.
LoadStage(Server)指定数据文件的服务器路径,或在使用管道时将其保留为空.
如果SybaseIQ服务器必须使用与LoadStage属性中指定的路径不同的临时数据文件的其它路径,请在此处输入该路径.
注意如果文件与网格引擎在同一台计算机上,并且已为具有ODBC接口的SybaseIQ15.
0staging数据库启用了客户端装载,则不必指定此属性.
如果启用了客户端装载,则IQ服务器将自动使用其缺省LOADTABLE语句将记录从位于远程主机上的文件添加到SybaseIQ表中.
属性说明第5章组件用户指南147DBStaging演示SybaseETL包括DBStaging组件的演示.
这些演示可用作Flash演示,而且可用作演示存储库中的样本项目.
若要运行Flash演示,请选择"Help"|"Demonstrations"|"Staging"|"DBStaging".
若要访问样本项目,请在"Navigator"中选择"Repository"|"TRANSFORMER.
transformer.
Repository"|"Projects",然后选择"DemoDBStaging".
CreateTables如果要在运行时基于输入端口结构自动创建表,请指定该属性.
选择:None(Default)–如果您不想自动创建表.
如果指定的表不存在,则会引发错误.
Non-existing–如果根据关联输入端口的结构,要创建的表不存在.
All–如果要根据端口结构,删除并重新创建与输入端口关联的所有表.
注意此属性应用于与输入端口关联的所有表.
无法在表级别指定此属性.
DropTables指定是否要在项目完成处理后删除在运行时创建的表.
此属性应用于与输入端口关联的所有表.
无法在表级别指定此属性.
Transactional由DBStaging组件执行的所有工作(包括pre-SQL和post-SQL)均在单个数据库事务中执行,该事务在项目正常完成时提交.
如果此组件遇到错误,请选择此选项来回滚事务.
有关"PropagateRollback"属性的信息,请参见第189页上的"作业组件"和第17页上的"为项目和作业启用事务性".
DatabaseOptions设置用于覆盖性能缺省值并控制某些事务的行为的选项.
请参见第87页上的"数据库连接设置".
属性说明目标组件148SybaseETL目标组件目标组件(也称作数据接收器)用于将数据写入特定目标.
此类组件有一个输入端口,但没有输出端口.
使用DBDataSink组件进行批量装载的先决条件必须为DBDataSink组件输入LoadStagePath才能支持IQ批量装载.
若要支持通过客户端装载执行IQ批量装载,DBDataSink组件必须满足以下条件:SybaseIQ版本必须为15.
0或更高版本.
"allow_read_client_file"选项的值必须设置为"on".
请参见第150页上的"启用客户端装载支持".
接口必须为ODBC.
不得指定LoadStagePath.
此外:Insert选项不应具有在使用DBDataSinkInsert组件时指定的SQLInsert值.
在使用DBDataSinkUpdate组件时,Update选项不应包含SQLUPDATESET子句,也不应从更新列的列表中省略NON-NULLABLE列的任何内容.
组件说明DBBulkLoadSybaseIQDBBulkLoadSybaseIQ对SybaseIQ表执行批量操作.
使用该组件可以根据组件输入端口中的记录来操作SybaseIQ数据库中的表记录.
DBDataSinkDelete从目标表删除与所选键的传入值匹配的记录.
DBDataSinkInsert将来自组件输入端口的记录添加到数据库表.
可以排除属性或赋予缺省值以确定插入表中的记录.
DBDataSinkUpdate更新或覆盖与所选键匹配的所有记录.
此组件不会插入新记录.
TextDataSink以分隔格式或固定长度格式将转换结果写入文本文件.
第5章组件用户指南149DBBulkLoadSybaseIQDBBulkLoadSybaseIQ是对SybaseIQ表执行批量操作的目标组件.
使用该组件可以根据组件输入端口中的记录来操作SybaseIQ数据库中的表记录.
配置DBBulkLoadSybaseIQ组件1将DBBulkLoadSybaseIQ组件拖动到"Design"窗口中.
2将DBBulkLoadSybaseIQ组件的输入端口连接到该组件的提供入站数据的输出端口.
3在"DatabaseConfiguration"窗口,添加SybaseIQ连接参数.
4单击"Destination"图标并选择要向其装载入站数据的表.
若要写入新的目标表,请参见第150页上的"添加新的SybaseIQ目标表".
5单击"LoadStage"图标.
您可以执行以下操作之一:选择或输入要用作临时数据文件的文件名,然后单击"Save",或者昞t在"LoadStage"字段中添加管道名(语法:pipe://).
有关特定字段要求,请参见第155页上的"DBBulkLoadSybaseIQ属性列表".
6单击"Finish".
将DBBulkLoadIQ添加到项目中:必须先启动SybaseIQ并且确保其处于运行状态,然后才能将该组件添加到项目中.
如果在同一计算机上同时运行ETLServer和IQ数据库,则可提高性能;但是,这不是必需的.
若要连接到IQ中的目标数据库,请选择一个有效的主机名和接口.
有关特定字段要求,请参见第155页上的"DBBulkLoadSybaseIQ属性列表".
若要将数据装载到新的IQ表中,您可以基于DBBulkLoad的输入端口或项目中任何可用端口的结构来创建目标表.
请参见第150页上的"添加新的SybaseIQ目标表".
若要自定义脚本,请右键单击"DBBulkLoadIQ"组件,然后选择"GenerateLoadScript".
单击"Properties"窗口中的"LoadScript"图标,编辑并保存您的脚本.
目标组件150SybaseETL根据数据库更改更新端口结构请参见第85页上的"根据数据库更改更新端口结构".
添加新的SybaseIQ目标表可以将入站数据写入现有表,也可以基于项目中的现有端口添加新的目标表.
基于输入端口添加目标表1右键单击该组件,然后选择"AddDestinationTablefromInput".
2为新表输入名称.
3单击"OK".
基于现有端口添加目标表1右键单击该组件,然后选择"AddDestinationTablefromPort".
2输入新表的名称,然后单击"OK".
3选择要用于创建表的端口.
单击"Apply".
启用客户端装载支持您可以使用该组件将数据从位于其它主机上的文件(而不是SybaseIQ)添加到SybaseIQ表.
您无需在同一计算机上安装SybaseETL和SybaseIQ;ETLServer和SybaseIQ可以在网络环境中通信,从而使您通过一个步骤即可从远程计算机批量装载.
若要支持客户端,请执行下列操作:将SybaseIQ15客户端安装在ETLServer所在的相同计算机上.
将SybaseSQLAnywhere11ODBC驱动程序安装在ETLDevelopment和ETLServer所在的同一计算机上.
目标IQ数据库版本必须为SybaseIQ15.
0.
在每个SybaseIQ15.
0服务器上,启用allow_read_client_file和allow_write_client_file选项.
若要设置这些选项,请执行下列操作:a从SybaseCentral连接到SybaseIQ15.
0服务器.
b右键单击SybaseIQ服务器的数据库名称,然后选择"Options".
c选择allow_read_client_file和allow_write_client_file选项,并将其值更改为On.
缺省情况下,该值为Off.
第5章组件用户指南151d使用isql或dbisql实用程序启用allow_read_client_file服务器选项属性.
setoptionallow_read_client_file=onGRANTREADCLIENTFILETO满足上述前提条件之后,在该组件的"Properties"窗口中选择"UseIQClientSideLoad".
此外,选择ODBC作为接口,否则,在装载远程主机上的数据时可能会遇到错误.
当使用的ODBC驱动程序为IQ15ODBC驱动程序时,客户端装载仅适用于ODBC.
注意如果选择"UseIQClientSideLoad"选项将客户端计算机上的文件中的数据批量装载到IQ数据库,请在"LoadStage"属性字段中提供文件路径名,而不是管道名.
客户端装载不支持使用"LoadStage"管道名.
配置多个写入器以装载数据SybaseETL支持在SybaseIQ15.
0中可用的多写入器功能.
使用此功能,可以添加多个写入器,以便将数据装载到IQ数据库中.
通过多写入器功能,您可以并行装载多个SybaseIQ表,其速度快于顺序装载.
如果您已执行以下操作,则可以使用多个写入器:从源数据库中选择了多个表,并且打算迁移到目标IQ数据库中的多个表.
创建的作业具有多个涉及多个表的多项目组件,或者已选择多个链接到并行执行拓扑的项目以执行作业.
若要使用多写入器功能,您必须在目标IQ数据库中具有下列权限:注意ETL在IQ数据库中创建两个表:ETL_MULTIPLEX_STATE和ETL_MULTIPLEX_VERSION.
ETL_MULTIPLEX_STATE表中的每一行都表示一个由ETL网格节点选择的IQ写入器,该行将在每次执行之后自动删除.
为了避免网格节点因意外错误而崩溃,必须手动清除该表中的数据.
对象名类型所需权限ETL_MULTIPLEX_STATE表createETL_MULTIPLEX_VERSION表createsp_iqstatisticStoredProcedure(存储过程)execute目标组件152SybaseETL您可以使用SybaseCentral来设置所需权限:1转至SybaseCentral,连接到SybaseIQ15.
0服务器.
2展开"Users&Groups",然后选择要为其设置创建表权限的用户.
3右键单击该用户,然后选择"Properties".
4选择"Authorities"选项卡,查看"Resource"选项,为该用户授予在IQ数据库中创建数据库对象的权限.
5选择"Permissions"选项卡,然后选择"Procedures&Functions"选项,以查看所有可用权限的列表.
6选择sp_iqstatistics,并单击对应的"Execute"列,以便为该用户授予在IQ数据库中执行存储过程的权限.
7单击"OK"保存设置.
注意若要支持Multiplex执行,必须将SQLAnywhere11ODBC驱动程序安装在ETLDevelopment和ETLServer所在的同一计算机上.
您必须在IQMultiplex.
ini文件中定义写入器,以便对这些写入器进行配置,从而用于Multiplex执行.
在IQMultiplex.
ini文件中定义首选写入器1导航至etc目录的安装文件夹,并使用文本编辑器打开IQMultiplex.
ini文件.
2为要使用的每个Multiplex组添加一个段.
缺省情况下,IQMultiplex.
ini文件为空.
如果未指定任何内容,网格引擎则使用内部缺省值.
下面显示了一个样本段:[dbsybase15+iq15m+sample]/*这是段名*/Enabled=trueWorkload=OperationsWaitingMinimalUpdateInterval=60SelectWriterTimeout=6MostIdleNode=selectNAMEfromTEST_CUSTOMER_NODEorderbyWORKLOADascMostBusyNode=selectNAMEfromTEST_CUSTOMER_NODEorderbyWORKLOADdesc第5章组件用户指南153必须提供段名,它包括协调器的接口名称、主机名和数据库名称,这些名称用加号(+)分隔开来.
不要使用冒号(:)、哈希(#)或等号(=)字符.
各个组的其它属性为可选属性并将在表5-1中讨论.
3保存并关闭文件.
表5-1:Multiplex组可选属性名称类型值说明EnabledbooleanTrue(缺省值)或False在IQ服务器数据库中启用或禁用此功能.
WorkloadtextOperationsWaiting(缺省值)指定应当使用EXECsp_iqstatistics结果中的哪一行来充当工作负荷.
调度程序执行存储过程EXECsp_iqstatistics以查询写入器工作负荷.
查询结果集在第二列中返回操作状态名称,并在第四列中返回状态值.
调度程序查找第二列与您指定的"Workload"选项值相符合的行,并将该行的第四列用作最终工作负荷值.
MinimalUpdateInterval整数大于零(0),缺省值为6调度程序通过查询协调器来刷新写入器信息的最小时间间隔(以秒为单位).
SelectWriterTimeout整数大于等于零(0),缺省值为0当选择但未释放所有写入器时,调度程序应当等待的秒数.
如果指定0,调度程序将无限期地等待.
在出现超时时,系统将生成错误.
目标组件154SybaseETLMostIdleNodeSQL缺省为空SQL执行返回的第一行的第一列应当为写入器节点名称.
调度程序假定返回的写入器是multiplex中最空闲的节点,并将其用作下一表装载请求的目标.
例如,以下SQL脚本可创建自定义调度表:DROPTABLETEST_CUSTOMER_NODE;CREATETABLETEST_CUSTOMER_NODE(NAMEvarchar(100),WORKLOADint/*必须为整数*/);INSERTINTOTEST_CUSTOMER_NODE(NAME,WORKLOAD)VALUES('iq15w1',78);INSERTINTOTEST_CUSTOMER_NODE(NAME,WORKLOAD)VALUES('iq15w2',34);INSERTINTOTEST_CUSTOMER_NODE(NAME,WORKLOAD)VALUES('iq15w3',12);/*iq15w1-w3为写入器*/若要从表中获取最空闲的节点,请在IQMultiplex.
ini文件中添加以下SQL查询:SelectNAMEfromTEST_CUSTOMER_NODEorderbyWORKLOADasciq15w3作为最空闲的节点返回.
名称类型值说明第5章组件用户指南155DBBulkLoadSybaseIQ属性列表DBBulkLoadSybaseIQ属性列表用于标识在"DatabaseConfiguration"窗口中定义的连接参数和其它项.
必要属性MostBusyNodeSQL缺省为空SQL执行返回的第一行的第一列应当为写入器节点名称.
调度程序假定返回的写入器是multiplex中最繁忙的节点,并延迟将其用作装载表目标.
例如,以下SQL脚本可创建自定义调度表:DROPTABLETEST_CUSTOMER_NODE;CREATETABLETEST_CUSTOMER_NODE(NAMEvarchar(100),WORKLOADint/*必须为整数*/);INSERTINTOTEST_CUSTOMER_NODE(NAME,WORKLOAD)VALUES('iq15w1',78);INSERTINTOTEST_CUSTOMER_NODE(NAME,WORKLOAD)VALUES('iq15w2',34);INSERTINTOTEST_CUSTOMER_NODE(NAME,WORKLOAD)VALUES('iq15w3',12);/*iq15w1-w3为写入器*/若要从自定义调度表中获取最繁忙的节点,请在IQMultiplex.
ini文件中添加以下SQL查询:SelectNAMEfromTEST_CUSTOMER_NODEorderbyWORKLOADdesciq15w1作为最繁忙的节点返回.
名称类型值说明属性说明Interface指定要用于连接到数据源的方法或驱动程序.
HostName指定SybaseIQ目标运行所在的主机.
目标从一组现有表中选择目标表.
目标组件156SybaseETL可选属性LoadStage指定数据文件路径或管道名.
LoadStage文件与IQServer必须位于同一台计算机上.
如果使用UNIX或Linux中的命名管道,则ETLServer和IQServer必须位于同一台计算机上.
对于Windows,这并不是必需的.
注意如果已选择"UseIQClientSideLoad"选项,请在"LoadStage"字段中提供文件路径名,而不是管道名称.
客户端装载不支持使用命名的管道.
属性说明属性说明UserandPassword标识获得授权的数据库用户,并保护数据库免受未经授权的访问的侵害.
SharedConnection选择此选项,以允许组件与具有相同连接和数据库参数的其它目标组件共享到数据库的单个连接.
只能在同一个项目中的多个组件之间共享连接.
同一作业内的不同项目中的组件不能共享连接使用相同的数据库接口和登录信息,但具有不同数据库选项的组件无法共享连接,并且会在执行或模拟项目时生成错误.
注意如果启用"UseIQMultiplex"属性,则连接共享不受支持.
Key选择用于标识"Upsert"或"Delete"操作的记录的目标键属性.
如果未选择任何键,接口则使用主键信息,该信息从DB主机传送.
如果未提供有任何主键信息,则会显示错误.
第5章组件用户指南157功能选择下列装载功能之一:Insert(缺省值)–使用指定文件路径或管道名将记录直接装载到选定目标表中.
Upsert–更新现有记录并插入新记录.
现有记录已被替换,但没有在属性级别进行更新.
您可以使用"Key"属性指定目标属性,以标识要更新的记录.
Delete–根据传入数据中的键删除目标表中的记录.
您可以使用"Key"属性指定目标属性,以标识要删除的记录.
如果已选择"Truncate"选项,则在装载之前,所有记录都将从目标表中删除.
在这种情况下,所选功能将按如下方式执行:Insert和Upsert会将所有记录直接装载到目标表.
Delete不会移动任何记录,但仍会执行Pre-processing和Post-processingSQL.
Truncate从目标表中删除装载之前的所有记录.
UseIQClientSideLoad使用LOADTABLE语句将记录从远程主机上的文件添加到SybaseIQ表.
LoadScript如果此属性为空,则会在运行时根据组件设置生成LOADTABLE语句.
要使用自定义脚本,请右键单击组件,然后选择"GenerateLoadScript".
LOADTABLE脚本是为Insert生成的.
生成脚本后,可以单击"LoadScript"并编辑脚本.
注意如果提供自定义LoadScript,则"Function"属性将被忽略.
LoadStage(Server)指定数据文件的服务器路径,或在使用管道时将其保留为空.
如果SybaseIQ服务器需要使用与LoadStage属性中指定的路径不同的临时数据文件的其它路径,请在此处输入该路径.
属性说明目标组件158SybaseETLPreProcessingSQL创建在组件初始化过程中运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
注意如果已选择"Truncate"选项,则在执行Pre-ProcessingSQL之前,将从目标表中删除所有记录.
PostProcessingSQL创建在所有组件执行后运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
Database标识要用作数据源的数据库.
如果选择此选项,您还必须选择相应的接口,在某些情况下还必须指定相应的用户ID和口令.
Schema标识要用作数据源的模式/所有者.
显示的对象相应地受到限制,新表将采用该模式创建.
StandardizeDataFormat将传入的DATE和NUMBER信息转换为SybaseETL可以在支持不同格式的系统之间移动的标准格式.
日期将转换为包括年、月、日、小时、分钟、秒钟和秒钟分数的格式:YYYY-MM-DDhh:mm:ss.
s.
例如:2005-12-0116:40:59.
123数字转换后使用句点(".
")作为小数分隔符.
DatabaseOptions设置用于覆盖性能缺省值并控制某些事务的行为的选项.
请参见第87页上的"数据库连接设置".
IQLockTableinExclusiveMode锁定目标表,并防止并发事务更新该表.
当应用排它表锁时,其它任何事务均不能对被锁定的表执行查询或任何更新.
"IQLockTableinExclusiveMode"选项还会对SybaseIQ中装载有相同表的多个项目进行排队.
WaitTimeforIQLockTable指定项目在获取排它锁之前应等待的最大阻塞时间.
请以hh:nn:ss.
sss格式指定时间参数.
如果未输入时间参数,服务器将无限期地等待,直到排它锁可用或发生中断为止.
如果指定"00:00:00.
000"作为时间参数,则会在项目启动时立即获取排它锁.
UseIQMultiplex使用多个写入器将数据装载到IQ数据库中,从而支持Multiplex执行.
属性说明第5章组件用户指南159DBBulkLoadSybaseIQ和数据库空间如果使用BulkLoadSybaseIQ组件并且项目或作业的执行需要很长时间,请检查SybaseIQ控制台或日志.
如果看到"outofspace"消息,则必须添加另一个数据库空间.
IQ消息文件中的消息指示哪个数据库空间的空间不足以及要添加的最小兆字节数.
如果插入数据时出现该问题,则可能需要更多的IQ存储空间.
如果在执行大量排序和合并操作的查询过程中出现该问题,则可能需要更多的临时存储空间.
此SQL语句可为Windows上现有的asiqdemo数据库增加100MB的数据库空间:CREATEDBSPACEasiqdemo2AS'd:\\sybase\\ASIQ-12_7\\demo\\asiqdemo2.
iq'IQSTORESIZE100;此SQL语句可为现有的asiqdemo数据库增加200MB的临时空间:CREATEDBSPACEasiqdemotmpAS'd:\\sybase\\ASIQ-12_7\\demo\\asiqdemo2.
iqtmp'IQTEMPORARYSTORESIZE200;注意有关诊断潜在内存问题的其它信息,请参见《SybaseIQ故障排除和恢复指南》中的"资源问题".
Transactional由DBBulkLoadSybaseIQ组件执行的所有工作(包括pre-SQL和post-SQL)均在单个数据库事务中执行,该事务在项目正常完成时提交.
如果此组件遇到错误,请选择此选项来回滚事务.
有关"PropagateRollback"属性的信息,请参见第189页上的"作业组件"和第17页上的"为项目和作业启用事务性".
属性说明目标组件160SybaseETL自定义IQLoader数据格式在写入数据文件或管道时以及在生成LOADTABLE脚本时,IQLoader接口会使用分隔符、空值处理和字符集的缺省值.
可以在ETLServerINI文件中指定缺省值,如下所示:DBDataSinkDeleteDBDataSinkDelete是从数据库目标表中删除与所选键传入值匹配的记录的目标组件.
如果没有任何匹配记录,则DBDataSinkDelete不显示错误消息.
配置DBDataSinkDelete组件1将DBDataSinkDelete组件拖到"Design"窗口上.
2在"DatabaseConfiguration"窗口中,为目标数据库添加连接参数.
指定有效接口和主机名.
有关特定字段要求,请参见第161页上的"DBDataSinkDelete属性列表".
3指定要在其中写入转换结果的表.
可以单击"DestinationTable"图标选择表,也可以在"DestinationTable"字段中手动输入表的名称.
可以将转换结果写入现有表,也可以基于项目中的现有端口添加目标表.
有关如何添加目标表的信息,请参见第165页上的"添加目标表".
若要基于现有端口结构添加表,请跳过此步骤.
4单击"Finish".
5在"Properties"窗口中,单击"Key"图标以选择用来标识要从目标表删除的记录的列.
必须先选择目标表,才能选择键,可以选择多个键列.
这是逻辑选择操作,与数据库模式中的任何基础索引无关.
组键值缺省值说明iq_loaderrowdelim任意字符串.
'\n'表示换行符.
'\n'行分隔符iq_loadercoldelim任意字符串.
'\t'表示制表符.
列分隔符iq_loadernullreplace任意字符串.
如果为空,则NULL子句不会添加到装载脚本中.
'[NULL]'用于NULL值的字符串iq_loadercharactersetIQ支持的任何字符集.
''(=auto)数据文件中使用的编码第5章组件用户指南1616在"Properties"窗口中指定所有其它可选属性.
根据数据库更改更新端口结构请参见第85页上的"根据数据库更改更新端口结构".
将输入端口的数据装载到数据库或文本文件右键单击"DBDataSinkDelete"组件,并选择"FlushBuffer".
"FlushBuffer"选项将缓冲行写出到目标.
已为其指定写入块大小的所有组件均可缓冲数据,直到达到写入块大小为止.
在模拟期间的任意时间,如果缓冲区内含有数据,"FlushBuffer"选项还会显示尚未写入到目标的行数.
如果缓冲区为空,该选项则为灰显.
DBDataSinkDelete属性列表下表列出了DBDataSinkDelete组件的必要属性和可选属性.
必要属性属性说明Interface标识要用于连接到数据源的方法或驱动程序.
HostName标识数据源.
"HostName"列表中显示的选项取决于所选的接口.
DestinationTable从一组现有表中选择目标表.
此外,还可以基于组件的端口结构创建新的目标表.
有关详细信息,请参见第165页上的"添加目标表".
键选择用来标识要删除的记录的目标表列.
选择键之前,必须选择目标表.
可以选择多个键列.
目标组件162SybaseETL可选属性属性说明UserandPassword标识获得授权的数据库用户,并保护数据库免受未经授权的访问的侵害.
SharedConnection选择此选项,以允许组件与具有相同连接和数据库参数的其它目标组件共享到数据库的单个连接.
只能在同一个项目中的多个组件之间共享连接.
同一作业内的不同项目中的组件不能共享连接使用相同的数据库接口和登录信息,但具有不同数据库选项的组件无法共享连接,并且会在执行或模拟项目时生成错误.
WriteBlockSize指定在单项写入操作中要写入文件的记录数.
PreProcessingSQL创建在组件初始化过程中运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
PostProcessingSQL创建在所有组件执行后运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
OpeningAttributeQuoteSQL语句中属性名的前缀.
ClosingAttributeQuoteSQL语句中属性名的后缀.
Database标识要用作数据源的数据库.
如果选择此选项,您还必须选择相应的接口,在某些情况下还必须指定相应的用户ID和口令.
Schema标识要用作数据源的模式/所有者.
显示的对象相应地受到限制,新表将采用该模式创建.
StandardizeDataFormat将传入的DATE和NUMBER信息转换为SybaseETL可以在支持不同格式的系统之间移动的标准格式.
日期将转换为包括年、月、日、小时、分钟、秒钟和秒钟分数的格式:YYYY-MM-DDhh:mm:ss.
s.
例如:2005-12-0116:40:59.
123数字转换后使用句点(".
")作为小数分隔符.
IQLockTableinExclusiveMode锁定目标表,并防止并发事务更新该表.
当应用排它表锁时,其它任何事务均不能对被锁定的表执行查询或任何更新.
"IQLockTableinExclusiveMode"选项还会对SybaseIQ中装载有相同表的多个项目进行排队.
第5章组件用户指南163WaitTimeforIQLockTable指定项目在获取排它锁之前应等待的最大阻塞时间.
请以hh:nn:ss.
sss格式指定时间参数.
如果未输入时间参数,服务器将无限期地等待,直到排它锁可用或发生中断为止.
如果指定"00:00:00.
000"作为时间参数,则会在项目启动时立即获取排它锁.
LoadStagePath指定数据文件路径.
LoadStage文件与IQServer必须位于同一台计算机上.
使用SybaseIQ数据库时,如果指定"LoadStagePath",则组件将使用LOADTABLE语句,而不是使用SQL语句.
这会使性能更快.
注意如果客户端装载平衡功能在IQServer上可用,则您不必输入LoadStagePath.
如果可用,则会将其自动与LOADTABLE语句一同使用,将记录从位于远程主机上的文件添加到SybaseIQ表中.
若要创建管道,请将pipe://指定为LoadStage参数.
如果"LoadStage"为空,则不使用管道.
如果使用UNIX或Linux中的命名管道,则ETLServer和IQServer必须位于同一台计算机上.
对于Windows,这并不是必需的.
LoadStage(Server)指定数据文件的服务器路径,或在使用管道时将其保留为空.
如果SybaseIQ服务器需要使用与LoadStage属性中指定的路径不同的临时数据文件的其它路径,请在此处输入该路径.
DatabaseOptions设置用于覆盖性能缺省值并控制某些事务的行为的选项.
请参见第87页上的"数据库连接设置".
Transactional由DBDataSinkDelete组件执行的所有工作(包括pre-SQL和post-SQL)均在单个数据库事务中执行,该事务在项目正常完成时提交.
如果此组件遇到错误,请选择此选项来回滚事务.
有关"PropagateRollback"属性的信息,请参见第189页上的"作业组件"和第17页上的"为项目和作业启用事务性".
属性说明目标组件164SybaseETLDBDataSinkDelete演示SybaseETL包括DBDataSinkDelete组件的几个演示.
这些演示可用作Flash演示,而且可用作演示存储库中的样本项目.
若要运行Flash演示,请选择"Help"|"Demonstrations"|"Destination"|"DBDataSink-Delete".
若要访问样本项目,请在"Navigator"中选择"Repository"|"TRANSFORMER.
transformer.
Repository"|"Projects",然后选择"DemoDBDatasinkDelete".
DBDataSinkInsertDBDataSinkInsert是将来自输入端口的记录添加到数据库表的目标组件.
可以排除属性或赋予缺省值以确定插入表中的记录.
配置DBDataSinkInsert组件1将DBDataSinkInsert组件拖到"Design"窗口上.
2在"DatabaseConfiguration"窗口中,为目标数据库添加连接参数.
3有关特定字段要求,请参见第165页上的"DBDataSinkInsert属性列表".
4选择或输入目标表.
可以写入现有表,也可以基于项目中的现有端口添加表.
有关其它信息,请参见第165页上的"添加目标表".
若要基于现有端口结构添加表,请跳过此步骤.
5单击"Finish".
6在"Properties"窗口中指定所有其它可选属性.
根据数据库更改更新端口结构请参见第85页上的"根据数据库更改更新端口结构".
将输入端口的数据装载到数据库或文本文件1右键单击"DBDataSinkInsert"组件,并选择"FlushBuffer".
"FlushBuffer"选项将缓冲行写出到目标.
已为其指定写入块大小的所有组件均可缓冲数据,直到达到写入块大小为止.
在模拟期间的任意时间,如果缓冲区内含有数据,"FlushBuffer"选项还会显示尚未写入到目标的行数.
如果缓冲区为空,则该选项不可用.
第5章组件用户指南165添加目标表可以将转换结果写入现有表,也可以基于项目中的现有端口添加目标表.
在"DatabaseConfiguration"窗口或"Properties"窗口中,无法基于端口结构添加表.
必须在"Design"窗口中选择端口结构.
写入现有表1在"DatabaseConfiguration"窗口中,指定要在其中写入转换结果的表.
可以单击"DestinationTable"图标选择表,也可以在"DestinationTable"字段中手动输入表的名称.
2单击"Finish".
基于输入端口添加目标表1在"Design"窗口中,右键单击该组件,然后选择"AddDestinationTablefromInput".
2为新表命名.
单击"OK".
3确认表信息正确,并单击"Create".
从现有端口添加目标表1在"Design"窗口中,右键单击该组件,然后选择"AddDestinationTablefromPort".
2为新表命名.
单击"OK".
3选择要将其结构指定给新表的端口.
单击"Apply".
4在"Addtable"窗口中验证表信息是否正确,然后单击"Create".
注意您也可以使用自己的工具箱创建目标表,或从"Properties"窗口选择现有表.
DBDataSinkInsert属性列表下表列出了DBDataSinkInsert组件的必要属性和可选属性.
目标组件166SybaseETL必要属性可选属性属性说明Interface指定要用于连接到数据源的方法或驱动程序.
HostName标识数据源.
"HostName"列表中显示的选项取决于所选的接口.
DestinationTable从一组现有表中选择目标表,或手动输入目标表.
此外,还可以基于组件的端口结构创建新的目标表.
请参见第165页上的"添加目标表".
属性说明UserandPassword标识获得授权的数据库用户,并保护数据库免受未经授权的访问的侵害.
SharedConnection选择此选项,以允许组件与具有相同连接和数据库参数的其它目标组件共享到数据库的单个连接.
只能在同一个项目中的多个组件之间共享连接.
同一作业内的不同项目中的组件不能共享连接使用相同的数据库接口和登录信息,但具有不同数据库选项的组件无法共享连接,并且会在执行或模拟项目时生成错误.
InsertOptions确定将如何插入记录.
"Include"列指定用于获取组件赋予的值的属性.
取消选择要对其应用数据库缺省值的任何属性.
在SQLINSERT子句列中,可以用新值覆盖传入属性的值.
可以使用基础数据库的SQL语言中允许的任何表达式.
SBN表达式在组件的初始化期间进行求值,因此值或表达式在单个执行期间始终是常量.
例如,SQLINSERT值子句为:静态值–"valid"动态值(由ETLServer进行求值)–"[uDate("now")]"数据库函数(由数据库服务器进行求值)–getdate()TruncateTable在初始化转换过程时从目标表中删除所有记录.
WriteBlockSize指定在单项写入操作中要写入文件或管道的记录数.
PreProcessingSQL创建在组件初始化过程中运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
第5章组件用户指南167PostProcessingSQL创建在所有组件执行后运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
OpeningAttributeQuote指定SQL语句中属性名的前缀.
ClosingAttributeQuote指定SQL语句中属性名的后缀.
Database标识要用作数据源的数据库.
如果选择此选项,您还必须选择相应的接口,在某些情况下还必须指定相应的用户ID和口令.
Schema标识要用作数据源的模式/所有者.
显示的对象相应地受到限制,新表将采用该模式创建.
StandardizeDataFormat将传入的DATE和NUMBER信息转换为SybaseETL可以在支持不同格式的系统之间移动的标准格式.
日期将转换为包括年、月、日、小时、分钟、秒钟和秒钟分数的格式:YYYY-MM-DDhh:mm:ss.
s.
例如:2005-12-0116:40:59.
123数字转换后使用句点(".
")作为小数分隔符.
IQLockTableinExclusiveMode锁定目标表,并防止并发事务更新该表.
当应用排它表锁时,其它任何事务均不能对被锁定的表执行查询或任何更新.
"IQLockTableinExclusiveMode"选项还会对SybaseIQ中装载有相同表的多个项目进行排队.
WaitTimeforIQLockTable指定项目在获取Exclusive锁之前应等待的最大阻塞时间.
请以hh:nn:ss.
sss格式指定时间参数.
如果未输入时间参数,服务器将无限期地等待,直到Exclusive锁可用或发生中断为止.
如果指定"00:00:00.
000"作为时间参数,则会在项目启动时立即获取Exclusive锁.
属性说明目标组件168SybaseETLDBDataSinkInsert演示SybaseETL包括DBDataSinkInsert组件的几个演示.
这些演示可用作Flash演示,而且可用作演示存储库中的样本项目.
若要运行Flash演示,请选择"Help"|"Demonstrations"|"Destination"|"DBDataSink-Insert".
LoadStagePath指定数据文件路径.
LoadStage文件与IQServer必须位于同一台计算机上.
使用SybaseIQ数据库时,如果指定"LoadStagePath",则组件将使用LOADTABLE语句,而不是使用SQL语句.
这会使性能更快.
注意如果客户端装载平衡功能在IQServer上可用,则您不必输入LoadStagePath.
如果可用,则会将其自动与LOADTABLE语句一同使用,将记录从位于远程主机上的文件添加到SybaseIQ表中.
若要创建管道,请将pipe://指定为LoadStage参数.
如果"LoadStage"为空,则不使用管道.
如果使用UNIX或Linux中的命名管道,则ETLServer和IQServer必须位于同一台计算机上.
对于Windows,这并不是必需的.
LoadStage(Server)指定数据文件的服务器路径,或在使用管道时将其保留为空.
如果SybaseIQ服务器需要使用与LoadStage属性中指定的路径不同的临时数据文件的其它路径,请在此处输入该路径.
DatabaseOptions设置用于覆盖性能缺省值并控制某些事务的行为的选项.
请参见第87页上的"数据库连接设置".
Transactional由DBDataSinkInsert组件执行的所有工作(包括pre-SQL和post-SQL)均在单个数据库事务中执行,该事务在项目正常完成时提交.
如果此组件遇到错误,请选择此选项来回滚事务.
有关"PropagateRollback"属性的信息,请参见第189页上的"作业组件"和第17页上的"为项目和作业启用事务性".
属性说明第5章组件用户指南169若要访问样本项目,请在"Navigator"中选择"Repository"|"TRANSFORMER.
transformer.
Repository"|"Projects".
然后选择:DemoTransferGermanCustomersDemoTransferGermanProductsDemoTransferGermanSalesDemoTransferU.
S.
CustomersDemoTransferU.
S.
ProductsDBDataSinkUpdateDBDataSinkUpdate是更新或覆盖与所选键匹配的所有记录的目标组件.
此组件不会插入新记录.
如果没有任何匹配记录,则DBDataSinkUpdate不显示错误消息.
注意如果更新值违背基础表或对象的限制(如约束、参照完整性或唯一索引定义),将显示错误消息.
所选KeyValue属性与任何现有索引定义无关.
配置DBDataSinkUpdate组件1将DBDataSinkUpdate拖到"Design"窗口上.
2在"DatabaseConfiguration"窗口中,为目标数据库添加连接参数.
有关特定字段要求,请参见第170页上的"DBDataSinkUpdate属性列表".
3指定要在其中写入转换结果的目标表.
可以单击"DestinationTable"图标选择表,也可以在"DestinationTable"字段中手动输入表的名称.
可以将转换结果写入现有表,也可以基于项目中的现有端口添加目标表.
有关如何添加目标表的信息,请参见第165页上的"添加目标表".
若要基于现有端口结构添加表,请跳过此步骤.
4单击"Finish".
目标组件170SybaseETL5在"Properties"窗口中,单击"Key"图标以选择用来标识要更新的记录的目标表列.
必须先指定目标表才能选择键,可以选择多个键列.
这是逻辑选择操作,与数据库模式中的任何基础索引无关.
6在"Properties"窗口中指定所有其它可选属性.
根据数据库更改更新端口结构请参见第85页上的"根据数据库更改更新端口结构".
将输入端口的数据装载到数据库或文本文件右键单击"DBDataSinkUpdate"组件,并选择"FlushBuffer".
"FlushBuffer"选项将缓冲行写出到目标.
已为其指定写入块大小的所有组件均可缓冲数据,直到达到写入块大小为止.
在模拟期间的任意时间,如果缓冲区内含有数据,"FlushBuffer"选项还会显示尚未写入到目标的行数.
如果缓冲区为空,则该选项不可用.
DBDataSinkUpdate属性列表下表列出了DBDataSinkUpdate组件的必要属性和可选属性.
必要属性属性说明Interface指定要用于连接到数据源的方法或驱动程序.
HostName标识数据源.
"HostName"列表中显示的选项取决于所选的接口.
DestinationTable从一组现有表中选择目标表,或手动输入目标表.
此外,还可以基于组件的端口结构创建新的目标表.
请参见第165页上的"添加目标表".
键选择用来标识要更新的记录的目标表列.
必须先选择目标表,才能选择键,可以选择多个键列.
第5章组件用户指南171可选属性属性说明UserandPassword标识获得授权的数据库用户,并保护数据库免受未经授权的访问的侵害.
SharedConnection选择此选项,以允许组件与具有相同连接和数据库参数的其它目标组件共享到数据库的单个连接.
只能在同一个项目中的多个组件之间共享连接.
同一作业内的不同项目中的组件不能共享连接使用相同的数据库接口和登录信息,但具有不同数据库选项的组件无法共享连接,并且会在执行或模拟项目时生成错误.
UpdateOptions选择要在更新中包括的属性(键属性未列出).
缺省情况下,会选择所有属性.
取消选择要从更新中排除的属性.
在SQLUPDATESET子句列中,可以用新值覆盖传入属性的值.
在SQL语言表示法中,列的内容将处理为:UPDATEcustomersSETcu_createdate='2005-02-26'WHERE….
可以使用基础数据库的SQL语言中允许的任何表达式.
SBN表达式在组件的初始化期间进行求值,因此值或表达式在单个执行期间始终是常量.
WriteBlockSize指定在单项写入操作中要写入文件或管道的记录数.
PreProcessingSQL创建在组件初始化过程中运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
PostProcessingSQL创建在所有组件执行后运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
OpeningAttributeQuote指定SQL语句中属性名的前缀.
ClosingAttributeQuote指定SQL语句中属性名的后缀.
Database指定要用作数据源的数据库.
如果选择此选项,您还必须选择相应的接口,在某些情况下还必须指定相应的用户ID和口令.
Schema标识要用作数据源的模式/所有者.
显示的对象相应地受到限制,新表将采用该模式创建.
目标组件172SybaseETLStandardizeDataFormat将传入的DATE和NUMBER信息转换为SybaseETL可以在支持不同格式的系统之间移动的标准格式.
日期将转换为包括年、月、日、小时、分钟、秒钟和秒钟分数的格式:YYYY-MM-DDhh:mm:ss.
s.
例如:2005-12-0116:40:59.
123数字转换后使用句点(".
")作为小数分隔符.
IQLockTableinExclusiveMode锁定目标表,并防止并发事务更新该表.
当应用排它表锁时,其它任何事务均不能对被锁定的表执行查询或任何更新.
"IQLockTableinExclusiveMode"选项还会对SybaseIQ中装载有相同表的多个项目进行排队.
WaitTimeforIQLockTable指定项目在获取排它锁之前应等待的最大阻塞时间.
请以hh:nn:ss.
sss格式指定时间参数.
如果未输入时间参数,服务器将无限期地等待,直到排它锁可用或发生中断为止.
如果指定"00:00:00.
000"作为时间参数,则会在项目启动时立即获取排它锁.
LoadStagePath指定数据文件路径.
LoadStage文件与IQServer必须位于同一台计算机上.
使用SybaseIQ数据库时,如果指定"LoadStagePath",则组件将使用LOADTABLE语句,而不是使用SQL语句.
这会使性能更快.
注意如果客户端装载平衡功能在IQServer上可用,则您不必输入LoadStagePath.
如果可用,则会将其自动与LOADTABLE语句一同使用,将记录从位于远程主机上的文件添加到SybaseIQ表中.
若要创建管道,请将pipe://指定为LoadStage参数.
如果"LoadStage"为空,则不使用管道.
如果使用UNIX或Linux中的命名管道,则ETLServer和IQServer必须位于同一台计算机上.
对于Windows,这并不是必需的.
LoadStage(Server)指定数据文件的服务器路径,或在使用管道时将其保留为空.
如果SybaseIQ服务器需要使用与LoadStage属性中指定的路径不同的临时数据文件的其它路径,请在此处输入该路径.
属性说明第5章组件用户指南173DBDataSinkUpdate演示SybaseETL包括DBDataSinkUpdate组件的演示.
这些演示可用作Flash演示,而且可用作演示存储库中的样本项目.
若要运行Flash演示,请选择"Help"|"Demonstrations"|"Destination"|"DBDataSink-Update".
若要访问样本项目,请在"Navigator"中选择"Repository"|"TRANSFORMER.
transformer.
Repository"|"Projects",然后选择"DemoDBDatasinkUpdate".
TextDataSinkTextDataSink是以分隔格式或固定长度格式将转换结果写入文本文件的目标组件.
配置TextDataSink组件1将TextDataSink组件拖动到"Design"窗口中.
当将TextDataSink组件添加到项目中时,TextDataSink组件的输出端口应链接到该组件的用来提供入站数据的输入端口.
有关特定字段要求,请参见第175页上的"TextDataSink属性列表".
另请参见:第174页上的"导出和导入文件定义"–"Component"窗口中的"Export"和"Import"选项可用于将文件属性保存到定义文件,并可将这些属性重用于其它组件.
DatabaseOptions设置用于覆盖性能缺省值并控制某些事务的行为的选项.
请参见第87页上的"数据库连接设置".
Transactional由DBDataSinkUpdate组件执行的所有工作(包括pre-SQL和post-SQL)均在单个数据库事务中执行,该事务在项目正常完成时提交.
如果此组件遇到错误,请选择此选项来回滚事务.
有关"PropagateRollback"属性的信息,请参见第189页上的"作业组件"和第17页上的"为项目和作业启用事务性".
属性说明目标组件174SybaseETL第175页上的"修改端口结构(分隔文件)"–分隔文件的列值反映了当前输入端口结构.
您可以基于另一个端口分配端口结构,也可以重新创建当前端口结构.
第175页上的"使用固定长度文件"–如果使用固定长度文件类型,则必须创建列,并且为每个列提供位置参数.
2单击"Save".
3在"Properties"窗口中指定所有其它可选属性.
注意如果"Design"窗口中存在一个相邻组件,则SybaseETL会自动在TextDataSink组件的输入端口和输出端口之间创建一个链接.
对于分隔文件,此链接提供了在打开该窗口时所看到的初始端口结构.
如果不存在,则您可能需要关闭"Design"窗口并将TextDataSink的输入端口与一个相邻组件的输出端口相连接.
注意TextDataSink不会对模拟序列产生任何影响.
将输入端口的数据装载到数据库或文本文件右键单击"TextDataSink"组件,并选择"FlushBuffer".
"FlushBuffer"选项将缓冲行写出到目标.
已为其指定写入块大小的所有组件均可缓冲数据,直到达到写入块大小为止.
在模拟期间的任意时间,如果缓冲区内含有数据,"FlushBuffer"选项还会显示行数.
如果缓冲区为空,则该选项不可用.
导出和导入文件定义"Component"窗口中的"Export"和"Import"选项可用于将文件属性保存到定义文件,并可将这些属性重新用于其它组件.
"Export"选项可将组件属性保存到定义文件中.
"Import"选项可装载您使用Export命令创建的定义文件.
导出文件定义1若要打开"Component"窗口,请双击"TextDataSink".
2单击"Properties"|"Export".
3选择要使用的定义文件.
第5章组件用户指南175导入文件定义1若要打开"Component"窗口,请双击"TextDataSink".
2单击"Properties"|"Import".
3选择要使用的定义文件.
修改端口结构(分隔文件)"TextDataSinkComponents"窗口的列值反映了当前输入端口结构.
您可以分配新的端口结构,也可以重新创建当前端口结构.
分配新的端口结构1若要打开"Component"窗口,请双击"TextDataSink".
2在"ColumnNames"窗格中,单击"AssignPortStructure"图标.
3选择要分配其结构的端口.
重新生成列定义1若要打开"Component"窗口,请双击"TextDataSink".
2在"ColumnNames"面板中,右键单击"Regeneratethecolumndefinition"图标.
使用固定长度文件对于固定长度文件类型,您必须创建列并提供每个列的位置参数.
将列添加到输出1若要打开"Component"窗口,请双击"TextDataSink".
2在"ColumnNames"窗格中,单击"InsertaNewAttribute"图标(如果可用).
您可以为已生成的列编辑名称.
从输出中删除列1若要打开"Component"窗口,请双击"TextDataSink".
2选择相应列并单击"Removeanattribute"图标.
TextDataSink属性列表下表列出了TextDataSink组件的必要属性和可选属性.
目标组件176SybaseETL必要属性可选属性属性说明TextDestination指定输出文件.
当向项目添加TextDataSink组件时,该组件会提示您指定目标文件.
若要指定目标文件,请单击"Properties"窗口中的"DestinationFile"图标,然后选择现有文件,或在项目执行期间键入完整路径和文件名以创建一个文件.
列在源文件中定义数据的列.
如果存在定义的属性值,则列值会反映您在"Component"窗口中定义的端口结构或属性值.
属性说明RowDelimiter指定每一行的分隔方式:Position(固定行位置)LF(换行符)CR(回车符)CRLF(回车符加换行符)也可以输入其它分隔符.
RowLength如果已选择"Position"作为"RowDelimiter",请指定每个固定行中的字符数.
ColumnDelimiter指定列的分隔方式:Position(固定列位置)TabCommaSemicolon也可以输入其它分隔符.
ColumnQuote指定将输出文件中的值引起来的方式(仅限分隔文件):无单引号双引号或者,输入其它引号字符或字符串第5章组件用户指南177FixedbyBytes指定如何解释为行长度、列开头和列结尾提供的值:Notselected(缺省值))–将值解释为字符数.
Selected–将值解释为字节数.
例如,假定源文件包含二进制数据:0x616263d6d0cec46162636465,并且具有以下特性:文件类型–固定(可变行)编码–GB2312行分隔符–"\n"列定义–列1:1–7;列2:9–10如果选择了"FixedbyBytes":列1显示前7个字节,其二进制数据为0x616263d6d0cec4.
列2显示第9和第10个字节,其二进制数据为0x6263.
如果没有选择"FixedbyBytes":列1显示前7个字符,其二进制数据为0x616263d6d0cec46162.
列2显示后两个字符,其二进制数据为0x6465.
注意在GB2312中,0xd6d0、c4c4表示两个中文字符.
Encoding设置当前字符编码.
AppendColumnDelimiter如果要将列分隔符附加到行的结尾,请选择该属性.
选择此选项后,可以在将输出文件装载到IQ中时增强性能.
ColumnHeader将列名写入文件.
Header创建要写入文件的报告标头.
TextDataSink会先写入标头,然后写入传入数据.
输入标头文本;可以使用中括号表示法(如果需要).
AppendData将传入数据附加到目标文件.
如果未设置此值,则TextDataSink会覆盖目标文件中的任何现有数据.
WriteBlockSize指定在单项写入操作中SybaseETL写入文件的记录数.
属性说明Loader组件178SybaseETLTextDataSink演示SybaseETL包括TextDataSink组件的几个演示.
这些演示可用作Flash演示,而且可用作演示存储库中的样本项目.
若要运行Flash演示,请选择"Help"|"ComponentDemonstrations"|"Destination"|"TextDataSink".
若要访问样本项目,请在"Navigator"中选择"Repository"|"TRANSFORMER.
transformer.
Repository"|"Projects".
然后选择:DemoXMLviaSQLDataProvider昞tDemoTextDataSinkDelimited/FixedLoader组件Loader组件有助于将源数据库或文件中的数据装载到IQ数据库,而无需执行任何转换.
Transactional由TextDataSink组件执行的所有工作(包括pre-SQL和post-SQL)均在单个数据库事务中执行,该事务在项目正常完成时提交.
如果此组件遇到错误,请选择此选项来回滚事务.
有关"PropagateRollback"属性的信息,请参见第189页上的"作业组件"和第17页上的"为项目和作业启用事务性".
属性说明组件说明IQLoaderFileviaLoadTable使用此组件可通过LOADTABLE语句将文件中的数据装载到IQ目标数据库中.
IQLoaderDBviaInsertLocation使用此组件可通过INSERTLOCATION语句将源数据库中的数据装载到IQ目标数据库中.
第5章组件用户指南179IQLoaderFileviaLoadTableIQLoaderFileviaLoadTable组件使用自动生成的LOADTABLE语句将文件中的数据装载到IQ目标数据库中.
这是一个自我包含组件,它在读取源文件时充当数据源,在写入SybaseIQ数据库时充当数据接收器.
该组件没有输入端口和输出端口,因此,不需要创建一个组件用于从源文件读取,再创建另一个组件用于在SybaseIQ中调用"LoadTable".
ETL会自动生成LoadTable语句,用于从分隔的文本文件中提取数据以及将数据装载到SybaseIQ中.
配置IQLoaderFileviaLoadTable组件1将IQLoaderFileviaLoadTable拖动到"Design"窗口中.
2在"DatabaseConfiguration"窗口中,为IQ目标数据库添加连接参数.
有关特定字段要求,请参见第180页上的"IQLoaderFileviaLoadTable属性列表".
3选择或输入目标表.
4单击"Finish".
5在"Properties"窗口中指定所有其它可选属性.
使用"TextSource"属性窗口"TextSource"属性窗口可为源文件中的数据定义结构属性:"FileContent"窗格–显示源文件的内容.
"Properties"窗格–显示文件说明属性.
注意选择源文件时,"TextSource"字段中显示的文件路径是于运行ETLDevelopment的计算机的路径.
如果网格引擎正在另一台计算机上运行,请选择本地文件,保存并关闭该窗口.
然后,重新打开该窗口,并使用运行网格引擎的计算机的文件路径来替换此路径.
"Preview"窗格–基于当前选定的属性显示源文件中数据的表格视图.
Loader组件180SybaseETL启用客户端装载支持您可以使用IQLoaderFileviaLoadTable组件将远程主机上的文件中的数据装载到SybaseIQ表中.
请参见第150页上的"启用客户端装载支持".
配置IQ多写入器以装载数据为了启用对Multiplex执行的支持(通过使用多个写入器将数据装载到IQ中),您必须执行某些其它配置.
有关详细的配置步骤,请参见第151页上的"配置多个写入器以装载数据".
IQLoaderFileviaLoadTable属性列表下表列出了IQLoaderFileviaLoadTable组件的必要属性和可选属性.
必要属性可选属性属性说明Interface指定要用于连接到目标IQ数据库的方法或驱动程序.
支持的接口为Sybase和ODBC.
HostName指定SybaseIQ目标运行所在的主机.
属性说明UserandPassword标识获得授权的数据库用户,并保护数据库免受未经授权的访问的侵害.
目标从一组现有表中选择目标表.
键选择用于标识"Upsert"或"Delete"操作的记录的目标键属性.
如果未选择任何键,接口则使用主键信息,该信息从DB主机传送.
如果未提供有任何主键信息,则会显示错误.
第5章组件用户指南181功能选择下列装载函数之一:Insert–将记录从文件直接装载到选定目标表中.
Upsert–更新现有记录并插入新记录.
当选择"Upsert"时,将替换现有记录,并且不会执行属性级更新.
您可以使用"Key"属性指定目标属性,以标识要更新的记录.
如果已选择"Truncate"选项,则在装载之前,所有记录都将从目标表中删除.
"Insert"和"Upsert"会将所有记录直接装载到目标表.
UseBinaryLoadFile选择从IQ二进制装载文件中装载数据.
注意如果选择"UseBinaryLoadFile"属性,则只能在"TextSource"属性中定义源文件路径.
不能指定其它任何属性.
TextSource标识要用作数据源的文本文件.
在"Properties"窗口中,单击"TextSource"图标,选择文件,然后指定格式.
请参见第179页上的"使用"TextSource"属性窗口".
UseIQClientSideLoad使用LOADTABLE语句将数据从远程主机上的文件批量装载到目标IQ数据库中.
RowDelimiter指定每一行的分隔方式:LF(换行符)CR(回车符)CRLF(回车符加换行符)也可以输入其它分隔符.
ColumnDelimiter指定列的分隔方式:TabCommaSemicolonPipe也可以输入其它分隔符.
属性说明Loader组件182SybaseETLLoadScript如果此属性为空,则会在运行时根据组件设置生成LOADTABLE语句.
要使用自定义脚本,请右键单击组件,然后选择"GenerateLoadScript".
LOADTABLE脚本是为Insert生成的.
生成脚本后,可以单击"LoadScript"并编辑脚本.
注意如果提供自定义LoadScript,则"Function"属性将被忽略.
Truncate从目标表中删除装载之前的所有记录.
PreProcessingSQL创建在组件初始化过程中运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
注意如果已选择"Truncate"选项,则在执行PreProcessingSQL之前,将从目标表中删除所有记录.
PostProcessingSQL创建在所有组件执行后运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
Database指定要用作数据目标的数据库.
该数据库与指定的用户名、口令和主机名一起使用.
Schema指定所有者以过滤表目录.
DatabaseOptions设置用于覆盖性能缺省值并控制某些事务的行为的选项.
请参见第87页上的"数据库连接设置".
NullIndicator指定用于表示源文件中空值的字符串.
SkipRows指定一次装载要从输入文件的开头跳过的行数.
缺省值为0.
Parallelformat允许LOADTABLE命令以并行方式运行.
若要使用此选项,所有列(包括最后一列)必须由单个ASCII字符进行分隔.
Strip在插入值之前去除值后的尾随空白.
该选项仅适用于长度可变的非二进制数据.
属性说明第5章组件用户指南183ByteOrder将在读取期间指定字节顺序.
此选项适用于所有二进制输入字段.
如果未定义,则此选项将会被忽略.
SybaseETL始终以运行二进制数据的计算机的本机格式读取二进制数据(缺省值为NATIVE).
您还可以指定以下值:HIGH,当多字节数量以高位字节优先时.
LOW,当多字节数量以低位字节优先时.
BlockSize指定读取输入时应使用的缺省大小(以字节为单位).
Limit指定要插入表中的最大行数.
缺省值为0,表示无限制.
ONFileError指定SybaseIQ在因为文件不存在或没有读取文件的正确权限而不能打开输入文件时应执行的操作.
对于所有其它原因或错误,则会终止整个插入操作.
可以指定下列选项之一:ROLLBACK(缺省设置)–中止整个事务.
FINISH–结束已完成的插入操作并结束装载操作.
CONTINUE–返回一个错误,但仅跳过该文件继续执行装载操作.
不能将此选项用于部分宽度的插入.
WordSkip遇到长度超过创建单词索引时指定的限制时,允许装载继续进行.
IQLockTableinExclusiveMode锁定目标表,以防止并发事务更新该表.
当应用排它表锁时,其它任何事务均不能对被锁定的表执行查询或任何更新.
"IQLockTableinExclusiveMode"选项还会对SybaseIQ中装载有相同表的多个项目进行排队.
WaitTimeforIQLockTable指定项目在获取排它锁之前应等待的最大阻塞时间.
请以hh:nn:ss.
sss格式指定时间参数.
如果未输入时间参数,服务器将无限期地等待,直到排它锁可用或发生中断为止.
如果指定"00:00:00.
000"作为时间参数,则会在项目启动时立即获取排它锁.
UseIQMultiplex使用多个写入器将数据装载到IQ数据库中,从而支持Multiplex执行.
属性说明Loader组件184SybaseETLIQLoaderDBviaInsertLocationIQLoaderDBviaInsertLocation组件通过InsertLocation语句将数据从源数据库装载到目标IQ数据库.
这是一个自我包含组件,它在读取源数据库时充当数据源,在写入SybaseIQ数据库时充当数据接收器.
该组件没有输入端口和输出端口,因此,不需要创建一个组件用于从源数据库读取,再创建另一个组件用于在SybaseIQ中调用"InsertLocation".
ETL会自动生成InsertLocation语句,用于将数据从源数据库传输到SybaseIQ.
InsertLocation:可用于将SybaseIQ12.
0版之前的列移动到12.
0版或更高版本.
能够优化从AdaptiveServerEnterprise或SybaseIQ到SybaseIQ的装载操作.
还可与SybaseEnterpriseConnectDataAccess(ECDA)配合使用,从Oracle、IBMDB2和MicrosoftSQLServer装载SybaseIQ.
ETL支持SybaseECDA15.
0与IBMDB29.
1、Oracle10g和MicrosoftSQLServer2005.
有关SybaseECDA文档,请参见SybaseProductManualsWebsite位于http://www.
sybase.
com/support/manuals.
注意Sybase是IQLoaderDBviaInsertLocation组件支持的唯一接口.
配置IQLoaderDBviaInsertLocation组件1将IQLoaderDBviaInsertLocation组件拖动到"Design"窗口.
2输入目标数据库的IQ数据库连接属性.
Host–选择IQ主机.
User–输入授权数据库用户名.
Transactional由IQLoaderFileviaLoadTable组件执行的所有工作(包括pre-SQL和post-SQL)均在单个数据库事务中执行,该事务在项目正常完成时提交.
如果此组件遇到错误,请选择此选项来回滚事务.
有关"PropagateRollback"属性的信息,请参见第189页上的"作业组件"和第17页上的"为项目和作业启用事务性".
属性说明第5章组件用户指南185Password–输入数据库用户的口令.
Database–选择要用作目标数据库的数据库.
Schema–选择模式/所有者以限制显示的对象,并在该模式下创建新表.
单击"Processing",以便在IQ目标数据库中输入预处理和后处理SQL.
单击"Logon"可查看可用表的列表.
单击"Next".
3输入源数据库的连接信息并选择要传送的表.
选择"Useremoteserverdefinitionforaccessingsourcedatabase"可从源数据库获取数据和元数据.
只有已使用CreateServer命令将源服务器定义为目标IQ数据库上的远程服务器时,才选择此选项.
如果不选择此选项,将使用.
INI或interfaces文件中提供的配置信息直接连接到源数据.
Host–选择数据源.
Database–选择要使用的数据库.
Schema–选择模式/所有者以限制显示的对象,并在该模式下创建新表.
单击"Processing",以便在源数据库上输入预处理和后处理SQL.
选择"CreateTargetTables"可创建目标表(如果目标表不存在).
如果要一直继续处理(即使当将数据装载到数据库时出现错误),请选择"ContinueonError".
选择"EncryptedPassword"选项可以加密格式传输口令.
注意SybaseIQ在用作远程服务器时不支持口令加密.
选择"UseIQMultiplex"选项,以通过使用多个写入器将数据装载到IQ来支持Multiplex执行.
如果要将多个表迁移到IQ数据库,请选择该选项.
选择"LockTable"选项可以以排它模式锁定目标表,并防止并发事务更新该表.
如果选择该选项,其它任何事务均不能对被锁定的表执行查询或任何更新.
"LockTable"选项还会对SybaseIQ中装载有相同表的多个项目进行排队.
Loader组件186SybaseETL如果选择该选项,还必须指定项目在获取锁之前应等待的最大阻塞时间.
在"PacketSize"字段中输入网络包大小.
为"LimitRows"输入值.
在"SkipRows"字段中指定装载时要从输入表的开头跳过的行数.
单击"Logon"可查看指定数据库的可用表的列表.
缺省情况下,已选择所有表进行传输.
对于不需要传送的表,请取消选择"Transfer"选项.
也可以选择一个或多个表的行,然后右键单击并选择"Exclude".
要将表纳入传输范围,请右键单击并选择"Transfer".
或者:单击"Excludeallobjectsfromtransfer"图标可排除所有表.
单击"Includeallobjectsintransfer"图标可包括所有表.
单击"Next".
4检验源表.
源表应为以下格式:source_schema.
source_table5选择目标表.
源与目标之间应存在一对一映射(每个目标对应一个源).
6单击"TruncateDestination"可从目标表中删除所有现有数据行.
7单击"Next".
8检查装载配置摘要.
单击"Finish".
设置InsertLocation语句的设置区域执行InsertLocation语句时,SybaseIQ就会装载确定语言、归类序列、字符集和日期/时间格式所需的本地化信息.
如果数据库使用平台的非缺省区域设置,则必须在本地客户端设置环境变量以确保SybaseIQ装载正确的信息.
如果设置了LC_ALL环境变量,则SybaseIQ将该变量的值用作区域设置名称.
如果未设置LC_ALL,SybaseIQ将使用LANG环境变量的值.
如果这两个变量均未设置,SybaseIQ将使用区域设置文件中的缺省条目.
有关示例,请参见《SybaseIQ12.
7系统管理指南》的第11章"国际语言和字符集"中的"设置区域设置".
第5章组件用户指南187配置IQ多写入器以装载数据为了启用对Multiplex执行的支持(通过使用多个写入器将数据装载到IQ中),您必须执行某些其它配置.
有关详细的配置步骤,请参见第151页上的"配置多个写入器以装载数据".
IQLoaderDBviaInsertLocation属性列表IQLoaderDBviaInsertLocation属性列表标识必须在"IQLoaderDBviaInsertLocation"组件窗口中定义的连接参数及其它项.
必要属性可选属性属性说明IQHostName指定SybaseIQ目标运行所在的主机.
IQUser指定获得授权的IQ用户,以保护数据库免受未经授权的访问的侵害.
IQPassword指定口令,以保护数据库免受未经授权的访问的侵害.
SourceHostName指定数据源.
SourceDatabase指定源数据库.
SourceTransferList指定模式限定的源表名称和目标表名称.
在目标截断列,指定1以截断目标表,否则输入0.
属性说明IQDatabase指定IQ目标数据库IQSchema指定IQ模式/所有者以限制显示的对象,并在该模式下创建新表.
IQPreProcessingSQL创建在组件初始化过程中运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
IQPost-processingSQL创建在所有组件执行后运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
UseRemoteDefinition只有已使用CreateServer命令定义源服务器作为目标IQ数据库上的远程服务器时,才选择此选项.
如果不选择此选项,将使用.
INI或interfaces文件中提供的配置信息直接连接到源数据.
SourceSchema指定模式/所有者以限制显示的对象.
Loader组件188SybaseETLSourcePre-processingSQL创建在组件初始化过程中运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
SourcePost-processingSQL创建在所有组件执行后运行的脚本.
脚本可包含一个或多个SQL语句.
如果使用多个语句,应以分号(;)进行分隔.
功能选择下列装载功能之一:Insert–将记录从源直接装载到选定目标表中.
Upsert–更新现有记录并插入新记录.
当选择"Upsert"时,将替换现有记录,并且不会执行属性级更新.
使用的表必须具有预定义的主键.
如果已选择"Truncate"选项,则在装载之前,所有记录都将从目标表中删除.
"Insert"和"Upsert"会将所有记录直接装载到目标表.
CreateTargetTables创建目标表(如果它们不存在).
ContinueonError继续执行(即使将数据装载到数据库时出现错误).
LimitRows指定要插入表中的最大行数.
缺省值为0,表示无限制.
SkipRows指定一次装载要从输入表的开头跳过的行数.
缺省值为0.
EncryptedPassword以加密格式传输口令.
PacketSize指定网络包大小.
LoadScript如果此属性为空,则会在运行时根据组件设置生成InsertLocation语句.
要使用自定义脚本,请右键单击组件,然后选择"GenerateLoadScript".
InsertLocation脚本是为Insert生成的.
生成脚本后,可以单击"LoadScript"并编辑脚本.
注意如果提供自定义LoadScript,则"Function"属性将被忽略.
UseIQMultiplex使用多个写入器将数据装载到IQ数据库中,从而支持Multiplex执行.
IQLockTableinExclusiveMode锁定目标表,以防止并发事务更新该表.
当应用排它表锁时,其它任何事务均不能对被锁定的表执行查询或任何更新.
"IQLockTableinExclusiveMode"选项还会对SybaseIQ中装载有相同表的多个项目进行排队.
属性说明第5章组件用户指南189作业组件作业组件控制作业的执行.
WaitTimeforIQLockTable指定项目在获取排它锁之前应等待的最大阻塞时间.
请以hh:nn:ss.
sss格式指定时间参数.
如果未输入时间参数,服务器将无限期地等待,直到排它锁可用或发生中断为止.
如果指定"00:00:00.
000"作为时间参数,则会在项目启动时立即获取排它锁.
Transactional由IQLoaderDBviaInsertLocation组件执行的所有工作(包括pre-SQL和post-SQL)均在单个数据库事务中执行,该事务在项目正常完成时提交.
如果此组件遇到错误,请选择此选项来回滚事务.
有关"PropagateRollback"属性的信息,请参见第189页上的"作业组件"和第17页上的"为项目和作业启用事务性".
属性说明组件说明Start表示作业的开头.
"Start"是添加到任何作业的第一个组件.
Project标识要在作业中运行的项目.
使用此组件可在作业中运行单个项目.
Synchronizer使用此组件可根据以前执行的项目的状态控制作业流程.
可以将各个项目定义为关键项目或非关键项目.
关键项目的故障将导致"Synchronizer"出现故障.
Multi-Project提供作业内项目组的可视化表示形式.
Multi-Project结合了"Project"组件和"Synchronizer"组件的属性.
当作业由大量可按任何顺序执行的独立项目组成时,可使用此组件.
Finish使用此组件可标记作业的成功结束.
错误使用此组件可标记一次失败作业的结束.
作业组件190SybaseETLStart"Start"是添加到任何作业的第一个组件.
若要将此组件添加到作业,请将其从"ComponentStore"拖动到"Design"窗口中.
注意您可以将多个"Project"组件和/或"Multi-Project"组件与"Start"组件相连.
Project"Project"组件标识要在作业中运行的项目.
使用此组件可在作业中运行单个项目.
添加和配置"Project"组件1若要将"Project"组件添加到作业,请将其从"ComponentStore"拖动到"Design"窗口中.
2将"Project"组件与其相邻组件连接.
3双击组件,然后选择要执行的项目.
必要属性可选属性属性说明项目名称选择要添加的项目.
属性说明ContinueonDBWriteErrors继续执行项目(即使在通过DBDataSink组件将数据装载到数据库时出现错误).
如果由于选择此属性而忽略了错误,则项目状态为"failed".
使用"CombinedwiththeRejectLog"选项可以对已拒绝记录进行"后处理".
第5章组件用户指南191"Project"组件演示请参见DemoRepository中的样本作业.
要运行样本作业,请执行下列操作:1在"Navigator"中单击"Repository"|"TRANSFORMER.
transformer.
Repository"|"Jobs".
2选择:DemoTransferallGermanDataDemoTransferU.
S.
SalesonanincrementalbasisSynchronizerSynchronizer控制作业执行的流程.
使用"Synchronizer"组件可根据以前执行的项目的状态控制作业流程.
可以将各个项目定义为关键项目或非关键项目.
关键项目的故障将导致作业流程沿着Synchronizer的Error端口上的分支执行.
可以将Synchronizer组件的Success和Error端口连接到以下任何组件:多个Project组件多个Multi-Project组件多个Project和Multi-Project组件一个Finish组件或Error组件配置Synchronizer组件1将该组件添加到作业,并连接它与所有将其执行状态通知此组件的项目.
2(可选)在"Property"窗口中:单击"SynchronizeOptions"图标以选择关键项目.
如果要在以前的项目成功完成后立即提交由这些项目执行的所有任务,请选择"CommitIntermediateWork".
选择"PropagateRollback",以对以前的项目启用事务性.
如果选择该选项,则会在成功执行的写入操作结束时提交数据,对于未成功执行的写入操作将进行回滚.
作业组件192SybaseETLSynchronizer组件演示请参见DemoRepository中的样本作业.
要运行样本作业,请执行下列操作:1在"Navigator"中单击"Repository"|"TRANSFORMER.
transformer.
Repository"|"Jobs".
2选择"DemoTransferallGermanData".
Multi-Project"Multi-Project"组件以可视化形式表示作业内的项目组.
Multi-Project结合了"Project"组件和"Synchronizer"组件的属性.
可以将Multi-Project组件的Success和Error端口连接到以下任何组件:多个Project组件多个Multi-Project组件多个Project和Multi-Project组件一个Finish组件或Error组件当作业由大量独立项目(可以按任何顺序执行,在多引擎作业中甚至可以并行执行)组成时,可使用此组件.
配置"Multi-Project"组件1将该组件添加到作业,并将它与其相邻组件连接.
2在"Properties"窗口中:单击"ProjectsExecution"图标可选择要执行的项目.
(可选)如果要在包含的项目成功完成后立即提交由这些项目执行的所有任务,请选择"CommitIntermediateWork"图标.
(可选)选择"PropagateRollback",以对包含的项目启用事务性.
如果选择该选项,则会在成功执行的写入操作结束时提交数据,对于未成功执行的写入操作将进行回滚.
3若要将项目添加到组,请在"Navigator"中右键单击项目名称,然后选择"AddProjects".
第5章组件用户指南1934若要从组中删除项目,请在"Navigator"中选择该项目,然后选择"RemoveProjects".
注意一个项目组可以仅包含项目的一个实例.
不要多次添加项目.
可用的项目执行选项包括:ContinueonError–此选项对应于"Project"组件的"ContinueonDBWriteErrors"属性.
如果选择此选项,项目将一直继续执行(即使将数据装载到数据库时出现错误).
Critical–将单个项目定义为关键项目或非关键项目.
关键项目的故障将导致"Multi-Project"组件出现故障.
"Multi-Project"组件演示请参见DemoRepository中的样本作业.
要运行样本作业,请执行下列操作:1在"Navigator"中单击"Repository"|"TRANSFORMER.
transformer.
Repository"|"Jobs".
2选择"DemoTransferallU.
S.
Data".
FinishFinish以直观方式表示一次成功作业执行的结束.
使用此组件可标记作业的成功结束.
可以将"Finish"连接到以下作业组件:Synchronize、Project或Multi-Project.
"Finish"组件演示请参见DemoRepository中的样本作业.
要运行样本作业,请执行下列操作:1在"Navigator"中单击"Repository"|"TRANSFORMER.
transformer.
Repository"|"Jobs".
作业组件194SybaseETL2选择:DemoTransferallGermanDataDemoTransferallU.
S.
DataDemoTransferU.
S.
Salesonanincrementalbasis错误"Error"组件以直观方式表示一次失败作业执行的结束.
使用此组件可标记一次失败作业的结束.
可以将"Error"组件连接到以下作业组件:Synchronize、Project或Multi-Project.
"Error"组件演示请参见DemoRepository中的样本作业.
要运行样本作业,请执行下列操作:1在"Navigator"中单击"Repository"|"TRANSFORMER.
transformer.
Repository"|"Jobs".
2选择:DemoTransferallGermanDataDemoTransferallU.
S.
Data用户指南195第6章SybaseETLServerSybaseETLServer是一种可伸缩的分布式网格引擎,它通过使用SybaseETLDevelopment设计的转换流程连接到数据源,提取数据并将其装载到数据目标.
SybaseETLServer使用用户数据报协议(UDP)广播通知其它服务器有关紧急事件(例如启动、停止、系统故障或崩溃)的信息.
用于通信的缺省端口为5124.
可以在INI文件中或使用命令行更改此缺省端口.
服务器之间的所有通信均在同一端口上通过TCP/IP完成.
注意请确保无防火墙阻止此端口且该端口当前未被使用.
根据需要,也可以将安装的所有服务器上的端口更改为另一端口号.
主题页码启动和停止SybaseETLServer196命令行参数197使用ETLServer执行项目和作业199同时执行多个项目200INI文件设置201使用Web浏览器监控项目和作业204SybaseETLServer故障排除207启动和停止SybaseETLServer196SybaseETL启动和停止SybaseETLServer本节描述如何启动和停止SybaseETLServer.
启动SybaseETLServer在命令提示符下,输入:在Windows上:GridNodeGridNode--port5500在Linux和UNIX中:GridNode.
shGridNode.
sh--port5500将SybaseETLServer作为Windows系统服务启动可以将SybaseETLServer作为Windows系统服务安装和运行.
若要作为独立于WindowsGUI的系统服务运行SybaseETLServer,请在系统启动后使用系统用户帐户启动ETLServer.
注意必须具有管理员特权才能安装、删除、启动和停止系统服务.
若要作为Windows系统服务安装服务器,请在命令提示符下,输入:GridNode.
exe--install[additionalparameters]若要删除服务,请在命令提示符下,输入:GridNode.
exe--remove作为Windows服务运行ETLServer时,基本事件(失败、成功消息等)将写入Windows事件日志.
第6章SybaseETLServer用户指南197停止SybaseETLServer如果服务器是本地或远程进程,可以从控制台停止服务器.
在服务器停止之前,所有当前运行项目会完成执行.
若要停止ETLServer,请在命令提示符下,输入:在Windows上:GridNode--shutdownGridNode--shutdown--server[remotehost]--port[port]在Linux和UNIX中:GridNode.
sh--shutdownGridNode.
sh--shutdown--server[remotehost]--port[port]注意若要停止在指定的服务器和端口上运行的网格引擎,必须提供服务器名称和端口号.
如果未提供服务器名称和端口号,则将停止缺省端口上的本地网格引擎.
命令行参数本节介绍所有SybaseETLServer命令行参数.
若要显示有关可用参数的概述,请在命令提示符下输入GridNode--help或GridNode-h.
控制台输出会显示每个参数的长格式和简写形式,例如:--version,-VDisplaysversioninformation注意完整的参数名称通常以两个减号作为前缀,而简写形式则只有一个减号.
表6-1:SybaseETLServer命令行参数命令UNIXWindows说明install或instNoYes作为Unix守护程序或Windows服务安装应用程序.
remove或rmNoYes删除系统服务启动功能.
setoptions或soNoYes设置作为Windows服务运行时使用的命令行选项.
getoptions或goNoYes输出当作为Windows服务运行时使用的命令行选项.
background或bgYesNo设置不会过度使用系统资源的后台进程.
命令行参数198SybaseETLno_pidfile或nopidYesNo设置服务器用来记录守护程序进程ID的文件.
console或conYesYes在控制台上写入详细错误信息和跟踪消息.
diagnosis或diagYesYes列出应用程序环境.
tracelevel或tlYesYes设置调试的跟踪级别,从0(无跟踪)到5(很详细).
server或sYesYes标识要使用的远程服务器.
port或pYesYes标识要在其上操作的端口号.
version或VYesYes显示应用程序版本信息.
help或hYesYes显示帮助信息.
licenses或llYesYes标识有关可用许可证及其状态的简短信息.
nodelist或nlYesYes列出所有已知对等节点.
shutdown或shYesYes关闭节点.
nodename或nYesYes设置节点名称.
用于执行项目和作业的命令行参数dbhosthostYesYes存储数据库主机名或数据源名称(DSN).
dbinterfaceinterface是是存储数据库接口.
dbdatabasedatabaseYesYes存储数据库名称.
dbschemaschemaYesYes存储数据库模式.
dbuseruserYesYes存储数据库用户.
dbpasswordencryptedpasswordYesYes存储数据库口令.
clientclientYesYes存储库客户端名.
useruserYesYes存储库客户端用户.
passwordencryptedpasswordYesYes存储库客户端口令.
perflog[args]YesYes将性能日志级别设置为0或1.
项目[name|ID]YesYes通过指定项目名称或ID执行项目.
job[name|ID]YesYes通过指定项目名称或ID执行作业.
paramset[name|ID]YesYes按名称或ID指定项目或作业的参数集.
encryptpasswordYesYes为口令加密,并显示加密值.
使用encrypt生成必须与dbpassword和password一同使用的加密口令.
pinghost:portYesYes检查ETLServer是否运行在指定的主机和端口上.
env"variable1=value;variable2=value;.
.
.
;variableN=value"YesYes指定要通过ETLServer运行的其它环境变量.
使用分号分隔多个环境变量,并将整个变量字符串置于双引号中.
repcdcinstancename或riYesYes指定ReplicationCDC服务名称.
命令UNIXWindows说明第6章SybaseETLServer用户指南199使用ETLServer执行项目和作业SybaseETLServer可以使用在第197页的表6-1中列出的命令行参数,在所有支持的平台上执行项目和作业.
若要执行项目和作业,请使用以下语法:GridNode--projectPROJ-1234-5678--dbinterfacedbodbc--dbhostetl_comp--clienttransformer--userTRANSFORMER--password1234ABCD其中,项目ID为"PROJ-1234-5678",数据库接口为"dbodbc",主机名为"etl_comp",客户端为"transformer",用户为"TRANSFORMER",且口令的加密版本为"1234ABCD".
也可以使用以下命令行参数执行项目和作业:project-按名称指定项目和参数集.
也可以按名称指定作业.
与输入复杂的项目、作业或参数集ID相比,指定名称更为简单.
以下示例使用项目名称"LoadCustomers"和参数集名称"myparams":GridNode--projectLoadCustomers-dbinterfacedbodbc--dbhostetl_com--clienttransformer--userTRANSFORMER--paramsetmyparams--password1234ABCDencrypt–生成加密口令.
加密口令必须与dbpassword和password一起使用.
若要对"mypassword"进行加密,请输入:Gridnode--encryptmypasswordETLServer将生成并显示加密口令.
ping–验证ETLServer是否运行在特定主机和端口上.
要验证ETLServer是否正在"localhost"的缺省端口运行,请输入:Gridnode--pinglocalhost如果ETLServer正在运行,将显示以下消息:localhostisalive!
如果ETLServer没有在您指定的主机和端口运行,则会显示错误消息.
同时执行多个项目200SybaseETLenv–指定项目和作业的环境变量.
使用uGetEnv函数,可以在运行时访问这些变量的值.
以下示例使用"LoadCustomers"项目,环境变量为INPUT_FILE和OUTPUT_FILE:GridNode--projectLoadCustomers--dbinterfacedbodbc--dbhostetl_com--clienttransformer--userTRANSFORMER--paramsetmyparams--password1234ABCD--env"INPUT_FILE=input.
txt;OUTPUT_FILE=output.
txt"注意当您输入命令时,请在同一行中键入命令、参数和值.
为清晰起见,本节中的示例采用多行.
在早于4.
5的SybaseETL版本中,项目和作业的执行是通过ProcessQ应用程序完成的,ProcessQ应用程序随ETLServer一起分发并且仅在Windows平台内部使用.
ProcessQ目前已不受支持.
同时执行多个项目若要在单个或多个网格引擎上或者同一个远程网格引擎上同时执行多个项目,请在Default.
ini文件中指定要同时执行的最大项目数.
警告!
如果有多个用户针对同一个远程引擎同时执行项目或作业,则在这些项目访问相同的资源(如数据库表和文件)时,可能会发生问题.
1导航至安装文件夹的etc目录,使用文本编辑器打开Default.
ini文件.
2在"Runtime"部分中,将MAXPROJECTS设置为要在给定的网格引擎上同时执行的项目数.
例如:MAXPROJECTS=3如果将MAXPROJECTS设置为0或负数,则对于可在网格引擎上同时执行的项目数没有任何限制.
第6章SybaseETLServer用户指南201缺省情况下,可以同时执行的最大项目数为10.
注意当多个用户针对同一个远程网格节点运行项目时,网格引擎不提供锁定机制.
源网格引擎在目标引擎中查询当前运行的项目数,以及所配置的可同时运行的最大项目数.
如果当前运行的项目数比最大项目数少,则源引擎在目标引擎上执行项目.
如果两个源网格引擎同时执行项目或作业,则在网格引擎上运行的项目数可能超过所配置的最大值.
INI文件设置安装目录的etc文件夹中提供了包含SybaseETLServer设置的INI文件.
INI文件设置202SybaseETLDefault.
ini组键值缺省值说明Networkproxyhost:portexplorerexplorer设置用于Internet访问的代理.
可以通过使用"http_proxy"、"https_proxy"、"ftp_proxy"或"ftps_proxy",针对某一协议对代理进行调优.
代理值"explorer"采用Windows环境中的系统代理.
Networktimeout1-2147483秒600秒设置FTP连接的超时值.
LanguageDefaultEnglish_USAEnglish_USA基于所选的语言和国家/地区调优应用程序的行为.
LoggingConsole1/00将日志信息发送到控制台.
LoggingLogFile1/01将日志信息发送到system.
log文件.
LoggingTracelevel050为调试提供不同程度的信息.
级别0提供最少量的信息,级别5提供最详细的信息.
在正常执行过程中,将此值设置为0可将对性能的影响降至最低程度.
LoggingFlushtime1n1表示内部日志刷新之间间隔的秒数.
第6章SybaseETLServer用户指南203SMTPServer为警报设置SMTP服务器的值.
用于为SMTP服务器指定服务器URL的语法如下所示:://[user[:password]@]host[:port]其中:protocol是SMTP或安全SMTP(SMTPS).
user是SMTP用户名.
password是SMTP口令.
host是主机名或IP地址.
port是监听器端口号.
注意除了protocol外,ServerURL也可以用单个INI文件键(如server、unsername、password、host和port)替代.
请参见第259页上的"uSMTP".
Port25SenderSybaseETLUsernamePassword注意除使用GridNode--encrypt对口令进行加密.
RetryCount0RetryInterval5ServerURLRecipientsSubject组键值缺省值说明使用Web浏览器监控项目和作业204SybaseETL使用Web浏览器监控项目和作业您可以使用Web浏览器监控所有网格节点的状态,包括作为网格体系结构一部分的ETLDevelopment网格引擎.
除监控通过ETLDevelopment启动的项目和作业之外,您还可以:监控远程作业的状态.
挂起和恢复远程作业和项目.
查看ETLServer的远程日志文件.
查看警报历史记录查看预定任务的列表开始监控之前:如果ETLServer尚未运行,则启动ETLServer.
验证您的计算机上是否安装有InternetExplorer(IE)6.
0或更高版本.
监控项目和作业1打开Web浏览器.
2请输入:http://:其中,为运行ETLServer的计算机的网络名,为在其上启动节点的端口.
缺省端口号是5124.
RuntimeRuntimeKeep_History_Days=5MaxProjects=10Keep_History_Days=5MaxProjects=10指示距离执行历史记录中的条目到期的天数.
PathUserdataUserdata.
conf指定在ETL启动时要使用的配置文件.
ETL在.
/etc目录中包括2个配置文件:userdata_user.
conf和userdata_main.
conf.
其中的一些文件将在安装过程中复制到userdata.
conf.
此参数是在内部设置的.
组键值缺省值说明第6章SybaseETLServer用户指南205在监控页面上,可以看到:NodeSummary–显示当前正在运行的服务器的详细信息,例如,运行该服务器的计算机的主机名和操作系统、该服务器运行的作业数、该服务器利用的CPU、内存和磁盘空间大小、PID和帐户信息,以及产品名称和版本号.
该选项卡还包括活动作业和最新作业列表.
ActiveJobs–显示正在运行的作业的详细列表.
JobHistory–提供自前一天执行的所有作业列表.
LogHistory–提供系统日志历史记录.
NodeOverview–提供所有正在运行的服务器的列表.
AlertHistory–提供系统警报历史记录.
查看活动作业单击"ActiveJobs"选项卡.
您将看到所有正在运行的作业及其详细信息,例如,名称、状态、作业中的项目数、启动和结束时间,以及已处理的记录数.
挂起活动作业在"ActiveJobs"选项卡或"NodeSummary"选项卡中,单击要挂起的作业旁的"Suspend"图标.
该作业的状态随即更改为"Suspended".
同时还挂起该作业中的所有项目.
恢复作业1在"ActiveJobs"选项卡或"NodeSummary"选项卡中,选择要查看其历史记录的作业.
或者,您也可以单击"JobHistory"选项卡.
2单击已被挂起的作业旁的"Resume"图标.
3该作业的状态随即更改为"Running",同时还会恢复该作业中的所有项目.
取消活动作业在"Summary"选项卡中,单击要取消的作业旁的"Cancel"图标.
该作业随即从列表中删除.
挂起活动项目在"ActiveJobs"选项卡中,单击要挂起的项目旁的"Suspend"图标.
该项目的状态随即更改为"Suspended".
使用Web浏览器监控项目和作业206SybaseETL恢复项目1在"ActiveJobs"选项卡中,选择具有已被挂起的项目的作业.
或者,您也可以单击"JobHistory"选项卡.
2单击已被挂起的项目旁的"Resume"图标.
项目状态随即更改为"Running",该项目即已恢复.
取消项目1在"ActiveJobs"选项卡中,选择活动作业列表中的作业.
2单击要取消的项目旁的"Cancel"图标.
项目状态随即更改为"Cancelled",该项目即被停止.
查看所有正在运行的服务器选择"NodeOverview"选项卡.
此时将显示所有正在运行的服务器的列表及其详细信息,例如该服务器运行的作业状态、作业数,以及CPU、内存和磁盘空间大小.
关闭服务器在"NodeOverview"选项卡中,单击服务器旁的"Shutdown"图标.
该服务器随即从列表中删除.
查看日志历史记录选择"LogHistory"选项卡.
此时将显示一个表,显示时间戳、错误类型和错误消息等系统日志详细信息.
如有必要,请单击"Download"以将日志文件下载到您的计算机.
查看预定任务的列表若要查看预定任务的列表,请执行以下操作:注意在WindowsScheduler上安排的任务将不显示.
1选择网格引擎以查看在其上安排的任务列表.
所有正在运行的引擎都将显示在页面左侧.
2选择"ScheduleTaskList"选项卡.
此时将显示选定引擎上所安装任务的列表.
3单击该任务旁边的"Terminate"图标以停止它.
同样,对于已终止的任务,单击它旁边的"Start"图标可执行它.
第6章SybaseETLServer用户指南207查看警报历史记录选择"AlertHistory"选项卡.
此时会显示一个包含警报详细信息的表.
如有必要,请单击"Download"以将警报日志文件下载到您的计算机.
SybaseETLServer故障排除如果您在使用SybaseETLServer时遇到问题,则可以联系Sybase技术支持以获得帮助.
在与他们联系之前,请完成以下步骤:1检查错误文本.
2检查日志文件.
3在启用系统跟踪的条件下再次运行SybaseETLServer.
4使用以下命令检验版本、修订编号以及计算机ID:GridNode--version输出:GridNode4.
9.
0.
275375使用以下命令检验可用的许可证:GridNode--licenses输出:GridNode(4.
9.
0.
27537)GridNodeProductID:SybaseETLServerMachineID:9TuA+igB6298Hys=SYSAMID:001111eb57f9DISK_SERIAL_NUM=189e22a0InstallDate:TuesdayJuly0313:53:472009File:sy_etl_server.
licenseProduct:SybaseETLServer(SybaseETLServer)Version:4.
9License:ETLComponents4.
9(ETL_SERVER)Status:ValidSybaseETLServer故障排除208SybaseETL用户指南209附录A函数参考集合主题页码集合209位操作211Boolean212转换217日期和时间222错误处理236文件239格式设置241模糊搜索243查找245杂项248网络258数字260脚本265字符串266三角函数275函数说明uAvg返回所有输入值的平均值uMax返回一列值中的最大值uMin返回一列值中的最小值uAvg210SybaseETLuAvg说明返回所有输入值的平均值语法realuAvg(value,.
.
.
)参数数字值一系列数值参数示例uAvg(1,2,3,4,5)//返回3uMax说明返回一列值中的最大值语法uMax(value,.
.
.
)参数数字值一系列数值参数示例uMax(1,6,4,-6)//返回6uMax("b","A","a")//返回"b"uMax("2004-05_02","2006-12-12","1999-05-30")//返回"2006-12-12"uMin说明返回一列值中的最小值语法uMin(value,.
.
.
|)参数数字值一系列数值参数示例uMin(1,6,4,-6)//返回-6uMin("b","A","a")//返回"A"uMin("2004-05-02","2006-12-12","1999-05-30")//返回"1999-05-30"附录A函数参考用户指南211位操作uBitAnd说明逐位与操作语法numberuBitAnd(value,.
.
.
)参数数字值一系列数值参数示例uBitAnd(10,3)//返回"2"uBitOr说明逐位或操作语法numberuBitOr(value,.
.
.
)参数数字值一系列数值参数示例uBitOr(10,3)//返回"11"函数说明uBitAnd逐位与操作uBitOr逐位或操作uIsAscending212SybaseETLBooleanuIsAscending说明如果每个参数均等于或大于其前项,则返回1语法numberuIsAscending(params,.
.
.
)参数params任意数据类型的一系列表达式或值.
示例检查多个值是否为升序:uIsAscending("A","B","C")//返回1uIsAscending("A","A","C")//返回1uIsAscending("A","C","B")//返回0uIsAscending("1","2","3")//返回1uIsAscending("3","2","2")//返回0uIsAscending("2004-03-03","2004-03-05","2004-03-07")//返回1uIsAscending("2004-03-03","2004-03-07","2004-03-05")//返回0函数说明uIsAscending如果每个参数均等于或大于其前项,则返回1uIsBoolean如果参数是1、true或yes中的某一个,则返回1uIsDate如果参数可以解释为日期,则返回1uIsDescending如果每个参数均等于或小于其前项,则返回1uIsEmpty如果参数为空或null,则返回1uIsInteger如果参数可以解释为整数值,则返回1uIsFloat如果参数可以解释为浮点值,则返回1uIsNull如果参数为null,则返回1uIsNumber如果参数可以解释为数字,则返回1附录A函数参考用户指南213uIsBoolean说明如果参数是以下值则返回1:1、true或yes0、no或false语法numberuIsBoolean(param)参数param表达式或任何数据类型的值.
示例检查是否为布尔值:uIsBoolean("1")//返回1uIsBoolean("yes")//返回1uIsBoolean("true")//返回1uIsBoolean("-1")//返回0uIsBoolean("0")//返回1uIsDate说明如果参数可以解释为日期,则返回1.
如果省略第二个参数,则函数尝试应用以下某一个格式:y-M-DH:N:S.
sy-M-DH:N:Sy-M-DH:N:S注意有关格式字符串的详细信息,请参见uConvertDate函数.
语法numberuIsDate(datestring[,format])uIsDescending214SybaseETL参数stringdatestring要检查的字符串stringformat(可选)输入日期的格式示例uIsDate("2004-02-29")//返回1uIsDate("2003-02-29")//返回0,因为2003不是闰年uIsDescending说明如果每个参数均等于或小于其前项,则返回1语法numberuIsDescending(params,.
.
.
)参数params任意数据类型的一系列表达式或值示例检查多个值是否为降序:uIsDescending("C","B","A")//返回1uIsDescending("C","C","A")//返回1uIsDescending("A","C","B")//返回0uIsDescending("3","2","1")//返回1uIsDescending("3","2","3")//返回0uIsDescending("2004-03-20","2004-03-15","2004-03-07")//返回1uIsDescending("2004-03-20","2004-03-07","2004-03-15")//返回0附录A函数参考用户指南215uIsEmpty说明如果参数为空或null,则返回1语法numberuIsEmpty(param)参数param要研究的表达式或值示例uIsEmpty("1")//返回0uIsEmpty(null)//返回1uIsEmpty("")//返回1uIsInteger说明如果参数可以解释为整数值,则返回1语法numberuIsInteger(param)参数param要研究的表达式或值示例uIsInteger("1")//返回1uIsInteger("2.
34")//返回0uIsInteger("ABC")//返回0uIsFloat说明如果参数可以解释为浮点值,则返回1语法numberuIsFloat(param)参数param要研究的表达式或值示例uIsFloat("1")//返回1uIsFloat("2.
34")//返回1uIsFloat("ABC")//返回0uIsNull216SybaseETLuIsNull说明如果参数为null,则返回1语法numberuIsNull(param)参数param要研究的表达式或值示例uIsNull("1")//返回0uIsNull(null)//返回1uIsNumber说明如果参数可以解释为数字,则返回1语法numberuIsNumber(param)参数param要研究的表达式或值示例检查是否为数字值:uIsNumber("1")//返回1uIsNumber("2.
34")//返回1uIsNumber("ABC")//返回0附录A函数参考用户指南217转换uBase64Decode说明将字符串从Base64表示形式解码语法stringuBase64Decode(input)参数stringinput要解码的字符串示例uBase64Decode("QSBzZWNyZXQ=")//返回"Asecret"uBase64Encode说明将字符串编码为Base64表示形式语法stringuBase64Encode(input)参数stringinput要编码的字符串.
示例uBase64Encode("Asecret")//返回"QSBzZWNyZXQ="函数说明uBase64Decode将字符串从Base64表示形式解码uBase64Encode将字符串编码为Base64表示形式uConvertDate将日期字符串转换为缺省或自定义日期格式uFromHex将十六进制值转换为整数值uToHex将整数值转换为十六进制数字uHexDecode以十六进制值编写字符串uHexEncode将字符串的字符编码为十六进制表示形式uToUnicode将字符串转换为其Unicode表示形式uURIDecode通过用其原始值替换转义序列将字符串解码uURIEncode用转义序列替换URI中的某些字符uConvertDate218SybaseETLuConvertDate说明将日期字符串转换为缺省或自定义日期格式.
该函数用于处理自1582年至今的日期.
如果不能转换日期,则结果字符串将为空.
语法stringuConvertDate(datestring,inputformat[,outputformat])参数stringdatestring要转换的日期字符串stringinputformat输入字符串的日期/时间格式stringoutputformat(可选)所需的输出格式.
如果省略,则缺省格式为y-M-DH:N:S.
示例将日期字符串转换为不同格式:uConvertDate("2005-06-2700:00:00","y-M-DH:N:S","DmY")//返回"27JUN05"uConvertDate("27JUN05","DmY")//返回"2005-06-2700:00:00"Sybase建议您为输出数据中需要的所有字段提供输入数据.
如果没有在输出数据中的字段中提供输入数据,可能会导致产生意外的结果.
例如,如果输出数据中需要小时、分钟和秒字段,则输入数据应当如下所示:uConvertDate("27JUN05","DmY","y-m-D00:00:00")//返回"2005-06-2700:00:00"附录A函数参考用户指南219用法函数uConvertDate使用源格式字符串和目标格式字符串将日期字符串转换为不同格式.
第一个参数是要转换的日期字符串.
第二个参数是格式字符串,用于指定输入日期的日期格式(参见下表).
outputformat参数是可选项;如果省略,则将使用格式y-M-DH:N:S.
该函数用于处理自1582年至今的日期.
如果不能转换日期,则结果字符串将为空.
uFromHex说明将十六进制值转换为整数值语法integeruFromHex(input)参数stringinput要转换的字符串:示例uFromHex("A3F")//返回2623uFromHex("B")//返回11标识符说明Y2位数年份(06)y4位数年份(2006)C世纪(20)M月份(03)m月份(JUN)D天(12)H小时(00–23)h小时(01–12)N分钟n月份(June)S秒s百分之一秒t千分之一秒AAM/PMd月中某天(05)E年中某天(001–366)G年中某周(01–52)F月中某周(1–6)uToHex220SybaseETLuToHex说明将整数值转换为十六进制值语法stringuToHex(input)参数integerinputhi要转换的整数值:示例uToHex(45)//返回"2D"uHexDecode说明以十六进制值编写字符串语法stringuHexDecode(input)参数stringinput包含十六进制值的十六进制字符串示例将十六进制值转换为字符串:uHexDecode("313730")//返回"170"uHexDecode(313730)//返回"170"uHexEncode说明将字符串的字符编码为十六进制表示形式语法stringuHexEncode(input)参数stringinput要编码的字符串示例将字符串转换为十六进制值:uHexEncode("170")//返回"313730"uHexEncode(170)//返回"313730"附录A函数参考用户指南221uToUnicode说明将字符串转换为其Unicode表示形式语法stringuToUnicode(input)参数stringinput输入字符串uURIDecode说明通过用其原始值替换转义序列将字符串解码语法stringuURIDecode(uri)参数stringuri要解码的URI示例uURIDecode(".
.
www.
myServer.
com/filename%20with%20spaces.
txt")//返回".
.
www.
myServer.
com/filenamewithspaces.
txt"uURIEncode说明用转义序列替换URI中的某些字符语法stringuURIEncode(uri)参数stringuri要编码的URI示例uURIEncode(".
.
www.
myServer.
com/filenamewithspaces.
txt")//返回".
.
www.
myServer.
com/filename%20with%20spaces.
txt"时间字符串222SybaseETL日期和时间大多数Date和Time函数都是从uFormatDate函数派生出来的.
唯一的差别是其它Date和Time函数只返回特殊格式的日期或部分日期,而且它们没有第一个格式参数.
因此,uDate()相当于uFormatDate("%Y-%m-%d").
另请参见第222页上的"时间字符串"第223页上的"修饰符"第224页上的"日期和时间计算"第225页上的"已知限制"第225页上的"日期和时间函数列表"时间字符串说明时间字符串可以采用以下任何一种格式:1YYYY-MM-DD2YYYY-MM-DDHH:MM3YYYY-MM-DDHH:MM:SS4YYYY-MM-DDHH:MM:SS.
SSS5HH:MM6HH:MM:SS7HH:MM:SS.
SSS8now9DDDD.
DDDD注意仅指定时间的格式5到7假设日期为2000-01-01.
格式8将转换为使用通用协调时间(UTC)的当前日期和时间.
格式9是以浮点值表示的儒略天数.
附录A函数参考用户指南223示例获取当前时间如果没有给定日期,则假定采用时间字符串now,并将日期设置为当前日期和时间.
uDate()//返回类似"2006-03-01"的内容uDate()相当于uDate("now")获取特殊日期uDate("2004-01-0414:26:33")//返回日期部分"2004-01-04"修饰符说明时间字符串后面可以是零,也可以是改变日期或改变日期含义的修饰符.
可用修饰符包括:1NNNdays2NNNhours3NNNminutes4NNN.
NNNNseconds5NNNmonths6NNNyears7startofmonth8startofyear9startofday10weekdayN11unixepoch12localtime13utc日期和时间计算224SybaseETL示例修饰符1到6只是将指定的时间量添加到由前面的时间字符串指定的日期中.
"startof"修饰符(7到9)将日期向后移到当前月、年或天的开头.
"weekday"(10)修饰符将日期向前移到星期编号为N的下一个日期:星期日是0,星期一是1,等等.
unixepoch修饰符(11)只有紧跟在DDDD.
DDDDD格式的时间字符串后面时才有效.
此修饰符导致将DDDD.
DDDDD解释为非通常情况下的儒略天数,而解释为自从1970年以来的秒数.
利用此修饰符可将基于UNIX的时间方便地转换为儒略天数.
localtime修饰符(12)调整前一时间字符串,以使它显示正确的本地时间.
utc则取消该操作.
日期和时间计算说明这些示例显示了一些典型的日期和时间计算.
示例计算当前日期:uDate('now')计算当前月的最后一天:uDate('now','startofmonth','+1month','-1day')在给定UNIX时间戳1092941466的条件下计算日期和时间:uDatetime(1092941466,'unixepoch')在给定UNIX时间戳1092941466的条件下计算日期和时间,并针对当地时区进行调整:uDatetime(1092941466,'unixepoch','localtime')计算当前UNIX时间戳:uFormatDate('%s','now')计算两个日期之间的秒数:uJuliandate('now')*86400-uJuliandate('2004-01-0102:34:56')*86400计算在当前年份的10月(1月+9)的第一个星期二的日期:uDate('now','startofyear','+9months','weekday2')附录A函数参考用户指南225已知限制说明对本地时间的计算随区域设置的不同而变化.
标准C库函数localtime()用于帮助计算本地时间.
而且,localtime()C函数正常情况下只对在1970年和2037年之间的年份有效.
对于此范围以外的日期,我们尝试将年份映射到在此范围内的相等年份,然后执行计算,最后映射回该年.
对于在儒略天数0(-4713-11-2412:00:00)之前的日期,日期计算不会给出正确的结果.
所有内部计算均假定是公历系统.
日期和时间函数列表说明此表列出所有日期和时间函数.
日期和时间函数列表226SybaseETL注意有关可能的修饰符参数的详细信息,请参见第222页上的"日期和时间".
函数说明uDate从格式为YYYY-MM-DD的日期中返回年、月和日uDateTime从格式为YYYY-MM-DDHH.
MM.
SS的日期中返回年、月和日uDay返回指定日期的天编号uDayOfYear返回自某年开头到现在的天数uHour返回指定日期的小时uQuarter返回年份的季度uIsoWeek返回按ISO8601定义的周编号uJuliandate以格式DDDD.
DDDD返回自从格林尼治时间公元前4714年11月24日中午以来的天数uMinute返回指定日期的分钟uMonth返回指定名称的月份uMonthName返回以当前区域设置语言指定的日期所属月份的名称uMonthNameShort返回以当前区域设置语言指定的日期所属月份的名称简写形式uSeconds返回指定日期的秒uTime以格式HH.
MM.
SS返回日期的时间部分uTimeDiffMs返回两个日期之差,单位为毫秒uWeek返回指定日期的星期uWeekday返回指定日期的星期日期uWeekdayName返回以当前区域设置语言指定的日期的星期名称uWeekdayNameShort返回以当前区域设置语言指定的日期的星期名称简写形式uYear返回指定日期的年份附录A函数参考用户指南227uDate说明从格式为YYYY-MM-DD的日期中返回年、月和日语法stringuDate([modifiers])参数stringmodifiers(可选)指定日期或日期计算的字符串列表.
缺省值为now修饰符.
示例获取时间戳中的日期部分:uDate("now")//以"YYYY-MM-DD"格式返回当前日期.
uDate("now","startofyear","9months","weekday2")//返回该年十月中第一个星期二的日期.
uDateTime说明从格式为YYYY-MM-DDHH.
MM.
SS的日期中返回年、月和日语法stringuDateTime([modifiers])参数stringmodifiers(可选)指定日期或日期计算的字符串列表.
缺省值为now修饰符.
示例获取时间戳中的日期时间部分:uDateTime("now")//返回当前日期,格式为"YYYY-MM-DDHH:MM:SS"uDateTime("now","startofmonth","1months","-1day")//返回该月最后一天的日期uDay228SybaseETLuDay说明返回指定日期的天编号语法stringuDay([modifiers])参数stringmodifiers(可选)指定日期或日期计算的字符串列表.
缺省值为now修饰符.
示例根据时间戳获得天编号:uDay("now")//返回当前天编号uDay("1969-03-1310:22:23.
231")//返回"13"uDayOfYear说明返回自某年开头到现在的天数语法stringuDayOfYear([modifiers])参数stringmodifiers(可选)指定日期或日期计算的字符串列表.
缺省值为now修饰符.
示例根据时间戳获得天编号:uDayOfYear("now")//返回该年已经过去了多少天uDayOfYear("1969-03-1310:22:23.
231")//返回"72"uHour说明返回指定日期的小时语法stringuHour([modifiers])参数stringmodifiers(可选)指定日期或日期计算的字符串列表.
缺省值为now修饰符.
示例uHour("now")//返回当前小时uHour("1969-03-1310:22:23.
231")//返回"10"附录A函数参考用户指南229uQuarter说明返回年份的季度语法stringuQuarter([modifiers])参数stringmodifiers(可选)指定日期或日期计算的字符串列表.
缺省值为now修饰符.
示例uQuarter("now")//返回当前季度uQuarter("2005-03-1310:22:23.
231")//返回"1"uIsoWeek说明返回按ISO8601定义的周编号某年的第一周是数字01,它被定义为包含日历年中第一个星期四的那一周,这意味着它还是:通常在日历年内的第一周包含1月4日的那周从最接近1月1日的星期一开始的那周因此某年的最后一周(数字52或53)是:包含日历年的最后一个星期四的那周通常在日历年内的最后一周包含12月28日的周以最接近12月31日的星期日结束的周语法numberuIsoWeek([modifiers])参数stringmodifiers(可选)指定日期或日期计算的字符串列表.
缺省值为now修饰符.
示例uIsoWeek("now")//返回当前周编号uJuliandate230SybaseETLuJuliandate说明以DDDD.
DDDD格式返回自从格林尼治时间公元前4714年11月24日中午以来的天数.
对于日期和时间计算,juliandate函数是最佳选择.
语法stringuJuliandate([modifiers])参数stringmodifiers(可选)指定日期或日期计算的字符串列表.
缺省值为now修饰符.
示例将日期转换成数字值以便进行计算:uJuliandate("now")//以"DDDD.
DDDD"格式返回当前日期计算两个日期之间的秒数:uJuliandate('now')*86400-uJuliandate('2004-01-0102:34:56')*86400在给定UNIX时间戳1092941466的条件下计算日期和时间,并针对当地时区进行调整:uJuliandate(1092941466,'unixepoch','localtime')uMinute说明返回指定日期的分钟语法stringuMinute([modifiers])参数stringmodifiers(可选)指定日期或日期计算的字符串列表.
缺省值为now修饰符.
示例uMinute("now")//返回当前分钟uMinute("1969-03-1310:22:23.
231")//返回"22"附录A函数参考用户指南231uMonth说明返回指定日期的月份语法stringuMonth([modifiers])参数stringmodifiers(可选)指定日期或日期计算的字符串列表.
缺省值为now修饰符.
示例uMonth("now")//返回当前月份uMonth("1969-03-1310:22:23.
231")//返回"03"uMonthName说明返回以当前区域设置语言指定的日期所属月份的名称语法stringuMonthName([modifiers])参数stringmodifiers(可选)指定日期或日期计算的字符串列表.
缺省值为now修饰符.
示例获取日期中的月份名称:uMonthName("now")//返回当前月份名称将区域设置设置为"English":uSetLocale("English")uMonthName("1969-03-1310:22:23.
231")//返回"March"将区域设置设置为"German":uSetLocale("German")uMonthName("1969-03-1310:22:23.
231")//返回"Mrz"uMonthNameShort232SybaseETLuMonthNameShort说明返回以当前区域设置语言指定的日期所属月份的名称简写形式语法stringuMonthNameShort([modifiers])参数stringmodifiers(可选)指定日期或日期计算的字符串列表.
缺省值为now修饰符.
示例获取日期中的月份名称:uMonthNameShort("now")//返回当前月份名称.
将区域设置设置为"English":uSetLocale("English")uMonthNameShort("1969-03-1310:22:23.
231")//返回"Mar"将区域设置设置为"German":uSetLocale("German")uMonthNameShort("1969-03-1310:22:23.
231")//返回"Mr"uSeconds说明返回指定日期的秒.
语法stringuSeconds([modifiers])参数stringmodifiers(可选)指定日期或日期计算的字符串列表.
缺省值为now修饰符.
示例uSeconds("now")//返回当前秒uSeconds("1969-03-1310:22:23.
231")//返回"23"附录A函数参考用户指南233uTime说明以HH.
MM.
SS格式返回日期的时间部分.
语法stringuTime([modifiers])参数stringmodifiers(可选)指定日期或日期计算的字符串列表.
缺省值为now修饰符.
示例获取时间戳中的时间部分:uTime()//返回当前UTC时间uTime("now","localtime")//返回当前本地时间uTimeDiffMs说明返回两个日期之差,单位为毫秒语法stringuTimeDiffMs(date1,date2)参数stringdate1更早的日期stringdate2更新的日期示例uTimeDiffMs("18:34:20","18:34:21")//返回1000uTimeDiffMs("18:34:20","18:34:21.
200")//返回1200uWeek说明返回指定日期的星期语法stringuWeek([modifiers])参数stringmodifiers(可选)指定日期或日期计算的字符串列表.
缺省值为now修饰符.
示例uWeek("now")//返回当前周uWeek("1969-03-1310:22:23.
231")//返回"10"uWeekday234SybaseETLuWeekday说明返回指定日期的星期编号语法stringuWeekday([modifiers])参数stringmodifiers(可选)指定日期或日期计算的字符串列表.
缺省值为now修饰符.
示例uWeekday("now")//返回当前星期编号uWeekday("1969-03-1310:22:23.
231")//返回"4"表示星期四uWeekdayName说明返回以当前区域设置语言指定的日期的星期名称语法stringuWeekdayName([modifiers]);参数stringmodifiers(可选)指定日期或日期计算的字符串列表.
缺省值为now修饰符.
示例uWeekdayName("now")//返回当前星期名称将区域设置设置为"English":uSetLocale("English")uWeekdayName("1969-03-1310:22:23.
231")//返回"Thursday"将区域设置设置为"German":uSetLocale("German")uWeekdayName("1969-03-1310:22:23.
231")//返回"Donnerstag"附录A函数参考用户指南235uWeekdayNameShort说明返回以当前区域设置语言指定的日期的星期名称简写形式语法stringuWeekdayNameShort([modifiers])参数stringmodifiers(可选)指定日期或日期计算的字符串列表.
缺省值为now修饰符.
示例uWeekdayNameShort("now")//返回当前星期名称将区域设置设置为"English":uSetLocale("English")uWeekdayNameShort("1969-03-1310:22:23.
231")//返回"Thu"将区域设置设置为"German":uSetLocale("German")uWeekdayNameShort("1969-03-1310:22:23.
231")//返回"Don"uYear说明返回指定日期的年份语法stringuYear([modifiers])参数stringmodifiers(可选)指定日期或日期计算的字符串列表.
缺省值为now修饰符.
示例uYear("now")//返回当前年份uYear("1969-03-1310:22:23.
231")//返回"1969"uError236SybaseETL错误处理uError说明将错误文本写入日志并通知出现错误语法stringuError(errortext)参数stringerrortext要写入日志文件的文本示例通知出错:uError("'PP'isnovalidcountrykey.
")uErrortext说明返回最后的错误消息语法stringuErrortext()示例uErrortext()//返回最后的错误文本函数说明uError将错误文本写入日志并通知出现错误uErrortext返回最后的错误消息uWarning将警告消息写入日志uInfo将信息性消息写入日志uTrace将跟踪消息写入日志uTracelevel在日志中设置跟踪消息的详细信息级别附录A函数参考用户指南237uInfo说明将信息性消息写入日志语法stringuInfo(infotext)参数stringinfotext要写入日志文件的文本示例记录信息性消息:uInfo("21445recordsselected.
")uWarning说明将警告消息写入日志语法stringuWarning(warningtext)参数stringwarningtext要写入日志文件的文本示例记录警告消息:uWarning("Theattributeforthecustomernameisnull.
")uTrace238SybaseETLuTrace说明将跟踪消息写入日志.
调用uTrace()函数之前,必须手动设置跟踪级别,使其至少为1.
若要将跟踪级别设置为1,请执行下列操作之一:在调用uTrace()函数之前先调用uTracelevel(1).
如果您使用的是ETLDevelopment,请在安装文件夹的etc目录的Default.
ini文件中将跟踪级别设置为1.
重新启动ETLDevelopment.
如果您使用的是ETLServer,请使用"--tracelevel1"选项启动服务器.
语法stringuTrace(tracetext);参数stringtracetext要写入日志文件的文本示例uTrace("CUSTOMER_NAME="+CUSTOMER_NAME)uTracelevel说明在日志中设置跟踪消息的详细信息级别.
tracelevel的范围为从0(不跟踪)到5(非常详细).
语法uTracelevel(tracelevel)注意详细的消息跟踪可能会使性能大幅下降.
参数integertracelevel指定跟踪消息的详细程度.
(0=关闭,5=非常详细)示例uTracelevel(5)//将tracelevel设置为"非常详细"附录A函数参考用户指南239文件uFileInfo说明返回有关文件的信息.
将infotype设置为EXISTS时,函数返回文件的完整路径(如果文件存在),或返回空字符串(如果文件不存在).
如果infotype设置为SIZE,则返回文件的大小.
如果文件不存在,则返回空字符串.
注意在JavaScript环境中请使用双反斜杠,因为在该环境中,反斜杠用作转义序列.
语法stringuFileInfo(file[,infotype])参数stringfile要检查的文件stringinfotype(可选)要获得的信息的种类.
缺省值为EXISTS.
示例获取文件信息:uFileInfo("C:\\windows\\notepad.
exe")//返回C:\windows\notepad.
exeuFileInfo("C:\\windows\\notepad.
exe","SIZE")//返回68608函数说明uFileInfo返回有关文件的信息uFileRead从文件读取数据uFileWrite将数据写入文件uFileRead240SybaseETLuFileRead说明从文件读取数据语法stringuFileRead(URL[,bytes][,offset][,encoding])参数stringURL指定要读取的源的URLintegerbytes(可选)要读取的字节数.
缺省值为0,这意味着整个文件.
integeroffset(可选)从文件开头跳过的字节数.
缺省值为0.
stringencoding(可选)数据源的编码.
缺省编码为ISO8859-1.
示例访问本地文件:uFileRead("c:\\myFile.
txt")uFileRead("/home/testuser/myfile.
txt")uFileRead("file:///c:/myFile.
txt")从Windows共享位置读取文件:uFileRead("\\\\fileserver\\freeShare\\testfile.
txt")通过HTTP和HTTPS读取文件的内容:uFileRead("http://http://www.
google.
com/searchhl=en&qpizza&btnG=Google+Search")uFileRead("https://http://www.
google.
com/searchhl=en&q=pizza&btnG=Google+Search")通过FTP读取文件的内容:uFileRead("ftp://myUser:myPasswd@myServer/data/myFile.
txt")附录A函数参考用户指南241uFileWrite说明将数据写入文件.
如果没有给定URL,则将数据写入SybaseETL日志目录中的write.
log文件.
语法stringuFileWrite(data[,URL][,append][,encoding])参数stringdata要写入的数据stringURL(可选)用于文件访问和定位的URLnumberappend(可选)标记(0/1)指示是否应当附加数据stringencoding(可选)目标文件的编码示例通过通用Internet文件系统(CIFS)将数据写入文件:uFileWrite("hello","//myServer/myShare/data/test.
txt")格式设置函数说明uFormatDate返回带日期信息的用户定义的字符串.
uFormatDate242SybaseETLuFormatDate说明返回带日期信息的用户定义的字符串.
语法numberuFormatDate(format,modifiers,.
.
.
)参数stringformat返回字符串的格式规范stringmodifiers(可选)指定日期或日期计算的字符串列表.
缺省值为now修饰符.
示例从日期创建字符串:uFormatDate("Todayis%Athe%dof%Bin%Y","now")//返回类似"TodayisThursdaythe10ofFebruaryin2005"的内容用法用户定义的格式字符串中的特殊转义序列将被引用日期部分替换.
转义序列返回值%A星期名称%a短星期名称%B月份名称%b短月份名称%d月中某天%f小数秒SS.
SSS%H小时00-24%j年中某天000-366%J儒略天数%m月份%M分钟%s自从1970年1月1日以来的秒数%S秒00-59%w周中某天0-6,0=星期日%W年中某周%Y年份0000-9999%%%附录A函数参考用户指南243模糊搜索uGlob说明比较区分大小写的相类似的值,对其通配符使用UNIX文件通配语法.
语法booluGlob(pattern,text)参数stringpattern说明匹配模式的字符串stringtext要研究的字符串示例使用UNIX文件通配语法比较值:uGlob("Mr.
*","Mr.
Smith")//返回1,指示匹配uGlob("Mr.
*","Mrs.
Clarke")//返回0通配规则:"*"–匹配零个或更多字符的任何序列.
""–只完全匹配一个字符.
匹配一个不在括起来的列表中的字符.
[.
.
.
]–匹配一个位于括起来的字符列表中的字符.
函数说明uGlob比较区分大小写的相类似的值,对其通配符使用UNIX文件通配语法uLike比较不区分大小写的值uMatches如果给定的字符串与正则表达式匹配,则返回trueuLike244SybaseETL使用[.
.
.
]和[^.
.
.
]匹配时,可以通过使右中括号(])成为在左中括号([)或脱字符(^)后面的第一个字符而将右中括号包括在列表中.
使用连字号(-)指定字符的范围:"[a-z]"匹配任何单个小写字母.
若要匹配连字号(-),则应使它成为列表中的最后一个字符.
若要匹配星号(*)或问号(),请将它们放在中括号([])中.
例如:abc[*]xyz匹配文字值"abc*xyz".
uLike说明比较不区分大小写的值.
uLike函数执行模式匹配比较.
第一个参数包含模式,第二个参数包含要根据该模式匹配的字符串.
模式中的百分比符号(%)与字符串中任何顺序的零个或更多字符匹配.
模式中的下划线(_)与字符串中任何单个字符匹配.
任何其它字符匹配其本身或者其小写或大写等价项.
注意目前,uLike只理解大写/小写的7位拉丁字符,这意味着uLike对8位ISO8859字符或UTF-8字符区分大小写.
例如:uLike('a','A')返回1.
uLike(返回0.
语法numberuLike(pattern,text)参数stringpattern说明匹配模式的字符串stringtext要研究的字符串示例使用模式匹配比较值:uLike("%happy%","Ahappyman.
")//返回1uLike("%happy%","Asadman.
")//返回0附录A函数参考用户指南245uMatches说明如果给定的字符串与正则表达式匹配,则返回True.
语法numberuMatches(text,regexpr)参数stringtext要检查的文本stringregexpr正则表达式规范示例检查字符串是否可以解释为浮点数:uMatches("abc"0-9]*\\.
[0-9]*")//返回0uMatches("1.
23"0-9]*\\.
[0-9]*")//返回1查找uChoice说明返回由索引指定的给定参数的值.
索引值从零开始,因此索引为零时返回第二个参数.
语法stringuChoice(index,values,.
.
.
)参数integerindex引用返回值的索引号,从零开始.
stringvalues值的列表函数说明uChoice返回由索引指定的给定参数的值uFirstDifferent返回与第一个参数不同的第一个参数值uFirstNotNull返回第一个非Null参数uElements返回分隔字符串中的元素个数uToken返回分隔字符串中的第N个元素uFirstDifferent246SybaseETL示例IF结构:uChoice(0,"A","B")//返回"A"uChoice(1,"A","B")//返回"B"CASE结构:uChoice(2,"n.
a.
","Jan","Feb","Mar")//返回"Feb"模拟您希望用相应的颜色名称替换颜色ID的查找函数:uChoice(IN.
Color,"n.
a.
","Red","Blue","Green")uFirstDifferent说明返回与第一个参数不同的第一个参数值语法stringuFirstDifferent(params,.
.
.
)参数params任意数据类型的一系列表达式或值示例uFirstDifferent("2004-05-01","2004-05-01","2005-01-04","2005-11-24",)//返回"2005-01-04"uFirstNotNull说明返回第一个非Null参数.
语法stringuFirstNotNull(params,.
.
.
)参数params任意数据类型的一系列表达式或值示例uFirstNotNull(null,null,"A","B")//返回"A"附录A函数参考用户指南247uElements说明返回分隔字符串中的元素个数.
如果省略第二个参数,则用空格(ASCII32)作为分隔符.
语法integeruElements(text[,delimiter])参数stringtext要研究的字符串stringdelimiter(可选)要使用的分隔符.
缺省分隔符为空格字符.
示例对分隔字符串中的令牌进行计数:uElements("JamesT.
Kirk")//返回3uToken说明返回分隔字符串中的第N个元素.
第二个参数指定令牌编号.
索引从1开始.
如果省略第三个参数,则用空格(ASCII32)作为分隔符.
语法stringuToken(text,index[,delimiter])参数stringtext要研究的字符串Integerindex要返回的令牌数stringdelimiter(可选)要使用的分隔符.
缺省分隔符为空格字符.
示例uToken("JamesT.
Kirk",1)//返回"James"uToken("JamesT.
Kirk",2)//返回"T.
"uCommandLine248SybaseETL杂项uCommandLine说明返回当前进程的命令行字符串语法stringuCommandLine()示例uCommandLine()//返回"GridNode.
exe--port5124"注意在UNIX上不支持uCommandLine.
uGetEnv说明返回环境变量的值语法stringuGetEnv(variable)参数stringvariable要读取的环境变量的名称示例uGetEnv("LOAD_MAX_VALUE")函数说明uCommandLine返回当前进程的命令行字符串uGetEnv返回环境变量的值uGuid返回全局唯一标识符uMD5生成给定字符串的校验和uScriptLoad装载和计算JavaScript,并返回结果uSetEnv设置环境变量的值uSetLocale将区域设置日期和时间设置更改为不同语言uSleep使进程延迟指定的毫秒数uSystemFolder返回预定义的应用程序和系统路径附录A函数参考用户指南249uGuid说明以下列格式之一返回全局唯一标识符:numeric–仅数字base64–base64编码hex–没有连字号的十六进制格式语法stringuGuid([format])参数stringformat(可选)要返回的GUID值的格式示例uGuid()//例如返回A8A10D9F-963F-4914-8D6FC8527A50EF2AuMD5说明生成固定长度为32个字符的给定字符串的校验和语法stringuMD5(text)参数stringtext要生成校验和的文本示例uMD5("AustinPowers")//返回"C679A893E3DA2CC0741AC7F527B1D4EB"uScriptLoad说明装载和计算JavaScript,并返回结果语法stringuScriptLoad(filelocation)参数stringfilelocation要装载的JavaScript.
示例装载外部JavaScript文件:uScriptLoad("\\server3\myScripts\basicFunctions.
js")uSetEnv250SybaseETLuSetEnv说明设置环境变量的值语法stringuSetEnv(variable,value)参数stringvariable要设置的环境变量的名称stringvalue要设置的值示例uSetEnv("LOAD_MAX_VALUE",IN.
Date)uSetLocale说明将区域设置日期和时间设置更改为不同语言语法stringuSetLocale([language][,country][,codepage])参数stringlanguage(可选)要使用的语言字符串(请参见"用法"部分中的表)stringcountry(可选)要使用的国家/地区名称(请参见"用法"部分中的表)stringcodepage(可选)字符串形式的代码页编号示例检索不同语言的月份名称:locale:uSetLocale("english")//切换到英语uMonthName("2005-03-22")//返回"March"uSetLocale("german")//切换到德语uMonthName("2005-03-22")//返回"Marz"uSetLocale("C")//切换回操作系统缺省值用法语言字符串下表列出了能够由系统识别的语言字符串.
uSetLocale只接受操作系统支持的任何语言.
注意三字母的语言字符串代码仅在WindowsNT和Windows95中有效.
附录A函数参考用户指南251主语言子语言语言字符串中文中文"chinese"中文中文(简体)"chinese-simplified"或"chs"中文中文(繁体)"chinese-traditional"或"cht"捷克语捷克语"csy"或"czech"丹麦语丹麦语"dan"或"danish"荷兰语荷兰语(比利时)"belgian"、"dutch-belgian"或"nlb"荷兰语荷兰语(缺省)"dutch"或"nld"英语英语(澳大利亚)"australian"、"ena"或"english-aus"英语英语(加拿大)"canadian"、"enc"或"english-can"英语英语(缺省)"english"英语英语(新西兰)"english-nz"或"enz"英语英语(英国)"eng"、"english-uk"或"uk"英语英语(美国)"english"、"americanenglish"、"english-american"、"english-us"、"english-usa"、"enu"、"us"或"usa"芬兰语芬兰语"fin"或"finnish"法语法语(比利时)"frb"或"french-belgian"法语法语(加拿大)"frc"或"frenchcanadian"法语法语(缺省)"fra"或"french"法语法语(瑞士)"french-swiss"或"frs"德语德语(奥地利)"dea"或"germanaustrian"德语德语(缺省)"deu"或"german"德语德语(瑞士)"des"、"german-swiss"或"swiss"希腊语希腊语"ell"或"greek"匈牙利语匈牙利语"hun"或"hungarian"冰岛语冰岛语"icelandic"或"isl"uSetLocale252SybaseETL国家或地区字符串以下是uSetLocale所识别的国家/地区字符串的列表.
uSetLocale只接受操作系统支持的国家/地区字符串.
三字母国家/地区或区域代码从ISO或IEC(标准化的国际组织,国际Electrotechnical委任)规范3166.
意大利语意大利语(缺省)"ita"或"italian"意大利语意大利语(瑞士)"italian-swiss"或"its"日语日语"japanese"或"jpn"朝鲜语朝鲜语"kor"或"korean"挪威语挪威语(博克马尔语)"nor"或"norwegianbokmal"挪威语挪威语(缺省)"norwegian"挪威语挪威语(尼诺斯克语)"non"或"norwegiannynorsk"波兰语波兰语"plk"或"polish"葡萄牙语葡萄牙语(巴西)"portuguese-brazilian"或"ptb"葡萄牙语葡萄牙语(缺省)"portuguese"或"ptg"俄语俄语(缺省)"rus"或"russian"斯洛伐克语斯洛伐克语"sky"或"slovak"西班牙语西班牙语(缺省)"esp"或"spanish"西班牙语西班牙语(墨西哥)"esm"或"spanish-mexican"西班牙语西班牙语(现代)"esn"或"spanish-modern"瑞典语瑞典语"sve"或"swedish"土耳其语土耳其语"trk"或"turkish"国家或地区国家或地区字符串澳大利亚"aus"或"australia"奥地利"austria"或"aut"比利时"bel"或"belgium"巴西"bra"或"brazil"加拿大"can"或"canada"捷克共和国"cze"或"czech"丹麦"denmark"或"dnk"芬兰"fin"或"finland"法国"fra"或"france"德国"deu"或"germany"主语言子语言语言字符串附录A函数参考用户指南253希腊"grc"或"greece"香港特别行政区"hkg"、"hongkong"或"hong-kong"匈牙利"hun"或"hungary"冰岛"iceland"或"isl"爱尔兰"ireland"或"irl"意大利"ita"或"italy"日本"japan"或"jpn"韩国"kor"、"korea"墨西哥"mex"或"mexico"荷兰"nld"、"holland"或"netherlands"新西兰"newzealand"、"new-zealand"、"nz"或"nzl"挪威"nor"或"norway"中华人民共和国"china"、"chn"、"prchina"或"pr-china"波兰"pol"或"poland"葡萄牙"prt"或"portugal"俄罗斯"rus"或"russia"新加坡"sgp"或"singapore"斯洛伐克共和国"svk"或"slovak"西班牙"esp"或"spain"瑞典"swe"或"sweden"瑞士"che"或"switzerland"中国台湾"taiwan"或"twn"土耳其"tur"或"turkey"英国"britain"、"england"、"gbr"、"greatbritain"、"uk"、"unitedkingdom"或"united-kingdom"美国"america"、"unitedstates"、"unitedstates"、"us"或"usa"国家或地区国家或地区字符串uSleep254SybaseETLuSleep说明使进程延迟指定的毫秒数语法stringuSleep(msecs)参数integermsecs要将进程挂起的毫秒数示例uSleep(1000)//使进程延迟一秒uSystemFolder说明返回预定义的应用程序和系统路径语法stringuSystemFolder([foldertype])示例uSystemFolder("APP_LOG")//返回日志目录的路径用法使用uSystemFolder可以访问文件系统上的特殊目录.
可以指定以下文件夹:组名称说明应用程序APP_MAIN基本应用程序路径.
典型路径为C:\ProgramFiles\ETL.
应用程序APP_LIB共享库目录.
典型路径为application_directory\lib.
应用程序APP_LOG共享库目录.
典型路径为application_directory\lib.
应用程序APP_CONFIGConfig文件目录.
典型路径为application_directory\etc.
应用程序APP_LICENSE许可证目录.
典型路径为application_directory\license.
应用程序APP_SCRIPT脚本目录.
典型路径为application_directory\scripts.
应用程序APP_GRAMMAR语法目录.
典型路径为application_directory\grammar.
应用程序APP_LANGUAGE语言文件目录.
典型路径为application_directory\language.
应用程序APP_DATABASE数据库目录.
典型路径为application_directory\database.
附录A函数参考用户指南255应用程序APP_TEMP临时目录.
典型路径为application_directory\temp.
应用程序APP_DEMODATA演示数据目录.
典型路径为application_directory\demodata.
应用程序APP_USERDATA用来存储特定于用户的文件的目录.
典型路径为C:\DocumentsandSettings\username\ApplicationData\ETL.
WindowsALTSTARTUP对应于用户的非本地化"启动"程序组的文件系统目录.
WindowsAPPDATA为特定于应用程序的数据充当公用存储库的文件系统目录.
典型路径为C:\DocumentsandSettings\username\ApplicationData.
WindowsCDBURN_AREA充当等待写入CD的文件的staging区域的文件系统目录.
典型路径为C:\DocumentsandSettings\username\LocalSettings\ApplicationData\Microsoft\CDBurning.
WindowsCOMMON_ADMINTOOLS包含所有计算机用户的管理工具的文件系统目录.
WindowsCOMMON_APPDATA包含所有用户的应用程序数据的文件系统目录.
典型路径为C:\DocumentsandSettings\AllUsers\ApplicationData.
WindowsCOMMON_DESKTOPDIRECTORY文件系统目录,其中包含在所有用户的桌面上出现的文件和文件夹.
典型路径为C:\DocumentsandSettings\AllUsers\Desktop.
仅对于WindowsNT系统有效.
WindowsCOMMON_DOCUMENTS包含所有用户公用文档的文件系统目录.
典型路径为C:\DocumentsandSettings\AllUsers\Documents.
WindowsCOMMON_FAVORITES文件系统目录,充当所有用户公用的收藏项的公用存储库.
仅对于WindowsNT系统有效.
WindowsCOMMON_MUSIC文件系统目录,充当所有用户公用的音乐文件的存储库.
典型路径为C:\DocumentsandSettings\AllUsers\Documents\MyMusic.
WindowsCOMMON_PICTURES文件系统目录,充当所有用户公用的图像文件的存储库.
典型路径为C:\DocumentsandSettings\AllUsers\Documents\MyPictures.
WindowsCOMMON_PROGRAMS文件系统目录,其中包含在所有用户的"开始"菜单上出现的公用程序组的目录.
典型路径为C:\DocumentsandSettings\AllUsers\StartMenu\Programs.
仅对于WindowsNT系统有效.
组名称说明uSystemFolder256SybaseETLWindowsCOMMON_STARTMENU文件系统目录,其中包含出现在所有用户的"开始"菜单上的程序和文件夹.
典型路径为C:\DocumentsandSettings\AllUsers\StartMenu.
仅对于WindowsNT系统有效.
WindowsCOMMON_STARTUP文件系统目录,其中包含出现在所有用户的"启动"文件夹中的程序.
典型路径为C:\DocumentsandSettings\AllUsers\StartMenu\Programs\Startup.
仅对于WindowsNT系统有效.
WindowsCOMMON_TEMPLATES文件系统目录,其中包含对所有用户可用的模板.
典型路径为C:\DocumentsandSettings\AllUsers\Templates.
仅对于WindowsNT系统有效.
WindowsCOMMON_VIDEO文件系统目录,充当所有用户公用的视频文件的存储库.
典型路径为C:\DocumentsandSettings\AllUsers\Documents\MyVideos.
WindowsCOOKIES文件系统目录,充当Internetcookies的公用存储库.
典型路径为C:\DocumentsandSettings\username\Cookies.
WindowsDESKTOP表示Windows桌面(命名空间的根)的虚拟文件夹.
WindowsDESKTOPDIRECTORY文件系统目录,用于物理存储桌面上的文件对象(不要与桌面文件夹本身混淆).
典型路径为C:\DocumentsandSettings\username\Desktop.
WindowsFAVORITES文件系统目录,充当用户收藏夹项目的公用存储库.
典型路径为C:\DocumentsandSettings\username\Favorites.
WindowsFONTS包含字体的虚拟文件夹.
典型路径为C:\Windows\Fonts.
WindowsHISTORY文件系统目录,充当Internet历史项目的公用存储库.
WindowsINTERNET_CACHE文件系统目录,充当临时Internet文件的公用存储库.
典型路径为C:\DocumentsandSettings\username\LocalSettings\TemporaryInternetFiles.
WindowsMYDOCUMENTS表示"我的文档"桌面项目的虚拟文件夹.
WindowsMYMUSIC文件系统目录,充当音乐文件的公用存储库.
典型路径为C:\DocumentsandSettings\User\MyDocuments\MyMusic.
组名称说明附录A函数参考用户指南257WindowsMYPICTURES文件系统目录,充当图像文件的公用存储库.
典型路径为C:\DocumentsandSettings\username\MyDocuments\MyPictures.
WindowsMYVIDEO文件系统目录,充当视频文件的公用存储库.
典型路径为C:\DocumentsandSettings\username\MyDocuments\MyVideos.
WindowsNETHOOD文件系统目录,其中包含可能存在于"网上邻居"虚拟文件夹中的链接对象.
它与CSIDL_NETWORK不同,后者表示网络命名空间的根.
典型路径为C:\DocumentsandSettings\username\NetHood.
WindowsPERSONAL表示"我的文档"桌面项目的虚拟文件夹.
它等同于MYDOCUMENTS.
WindowsPRINTHOOD文件系统目录,其中包含可以存在于"打印机"虚拟文件夹中的链接对象.
典型路径为C:\DocumentsandSettings\username\PrintHood.
WindowsPROFILE用户的配置文件文件夹.
典型路径为C:\DocumentsandSettings\username.
应用程序不应当在此级别创建文件或文件夹,而是应当将其数据放在APPDATA或LOCAL_APPDATA引用的位置下面.
WindowsPROGRAM_FILES"ProgramFiles"文件夹.
典型路径为C:\ProgramFiles.
WindowsPROGRAM_FILES_COMMON跨应用程序共享的组件的文件夹.
典型路径为C:\ProgramFiles\Common.
仅对于WindowsNT、Windows2000和WindowsXP系统有效.
WindowsPROGRAMS包含用户的程序组(它们本身就是文件系统目录)的文件系统目录.
典型路径为C:\DocumentsandSettings\username\StartMenu\Programs.
WindowsRECENT文件系统目录,其中包含用户最近使用过的文档的快捷方式.
典型路径为C:\DocumentsandSettings\username\MyRecentDocuments.
若要在此文件夹中创建快捷方式,请使用SHAddToRecentDocs.
除了创建快捷方式以外,此函数还会更新shell的最近文档列表,并将快捷方式添加到"开始"菜单的"我最近的文档"子菜单中.
组名称说明uHostname258SybaseETL网络uHostname说明返回本地网络名称语法stringuHostname()示例uHostname()//返回类似"pollux"或"castor"这样的信息WindowsSENDTO包含"发送到"菜单项的文件系统目录.
典型路径为C:\DocumentsandSettings\username\SendTo.
WindowsSTARTMENU包含"开始"菜单项的文件系统目录.
典型路径为C:\DocumentsandSettings\username\StartMenu.
WindowsSTARTUP对应于用户的"启动"程序组的文件系统目录.
一旦任何用户登录到WindowsNT或启动Windows95,系统就会启动这些程序.
典型路径为C:\DocumentsandSettings\username\StartMenu\Programs\Startup.
WindowsSYSTEMWindows系统文件夹.
典型路径为C:\Windows\System32.
WindowsTEMPLATES文件系统目录,充当文档模板的公用存储库.
典型路径为C:\DocumentsandSettings\username\Templates.
WindowsWINDOWSWindows目录或SYSROOT.
它对应于%windir%或%SYSTEMROOT%环境变量.
典型路径为C:\Windows.
组名称说明函数说明uHostname返回本地网络名称uSMTP将电子邮件发送到SMTP服务器附录A函数参考用户指南259uSMTP说明向SMTP服务器发送邮件语法booluSMTP(serverURL,sender,recipients,subject,body)booluSMTP(sender,recipients,subject,body)booluSMTP(recipients,subject,body)booluSMTP(subject,body)booluSMTP(body)参数stringserverURLURL,用于指定要使用的SMTP服务器、端口、用户名和口令stringsender发件人的电子邮件地址stringrecipients收件人的逗号分隔列表stringsubject电子邮件的主题stringbody电子邮件的内容示例uSMTP("Justamail")uSMTP("Testmail!
","Justamail")用法uSMTP函数允许使用SMTP服务器将电子邮件发送到多个收件人.
用于指定SMTP服务器的服务器URL使用以下语法:protocol://user:password@server:port协议可为下列协议之一:–带SSL加密的SMTP(如果适用)SMTP–无SSL加密的SMTPSMTPS–带SSL加密的SMTP用户名和口令–用户名和口令用于验证客户端.
如果不提供,则不会执行身份验证.
注意如果用户名包含@符号,则必须用#替换它,以避免混淆.
uSMTP260SybaseETL端口–要使用的TCP端口,缺省值为25.
myServermyServer:123SMTPS://myServer:123Me:secret@myServer通过添加以逗号分隔的地址列表来指定收件人.
缺省情况下,直接发送到所有收件人.
若要以抄送或密件抄送形式发送,只需在电子邮件地址前添加"cc:"或"bcc:":user@host.
domainMyNameTo:MyNameTo:user@host.
domainCc:MyNameTo:user@host.
domain,Bcc:TestUser如果SMTP服务器允许加密的通信,则加密通信会自动执行.
如果您提供了用户名和口令,则将按以下顺序尝试身份验证方法:PLAIN、LOGIN.
可以在INI文件中指定个人缺省值:[SMTP]ServerURL=Sender=Recipients=Subject=例如:[SMTP]ServerURL=maxm:secret@mail.
gmail.
comSender=MaxiRecipients=ETLAdmin@MyCompany.
com,Cc:QAqa@MyCompany.
comSubject=ETLMessage数字函数说明uAbs返回实数的大小,忽略其正、负符号uCeil返回大于或等于参数的最小整数uDiv返回除法整数uExp返回以e为基数的幂uFloor返回小于或等于参数的最大整数附录A函数参考用户指南261uAbs说明返回实数的大小,忽略其正、负符号语法numberuAbs(value)参数数字值要进行计算的数字示例uAbs(1522)//返回1522uAbs('-123.
45')//返回123.
45uAbs('123ABC')//返回0uCeil说明返回大于或等于参数的最小整数语法numberuCeil(value)参数数字值要进行计算的数字示例向上舍入数字:uCeil(1523.
1)//返回1524uCeil(1523.
9)//返回1524uLn返回数字的自然对数(基数e)uLog返回数字的对数uMod返回除法的模uPow,uPower返回基数表达式取指定次方的值uRandom返回随机数字uRound返回舍入到最近整数的参数uSgn返回给定值的符号uSqrt返回给定值的平方根函数说明uDiv262SybaseETLuDiv说明返回除法整数语法numberuDiv(value,divisor)参数数字值要进行计算的数字numberdivisor除法的除数示例uDiv(10,3)//返回3uExp说明返回以e为基数的幂语法numberuExp(value)参数数字值要进行计算的数字示例uExp(1)//返回"2.
718281828459045"uFloor说明返回小于或等于参数的最大整数语法numberuFloor(value)参数数字值要进行计算的数字示例uFloor(1523.
1)//返回1523uFloor(1523.
9)//返回1523附录A函数参考用户指南263uLn说明返回数字的自然对数(基数e)语法numberuLn(value)参数数字值要进行计算的数字示例uLn(2.
718281828)//返回0.
999999uLog说明返回数字的对数语法numberuLog(value[,base])参数数字值要进行计算的数字numberbase(可选)对数的基数.
如果省略,则使用10作为基数.
示例uLog(100)//返回2uLog(16,2)//返回4uMod说明返回除法的模语法numberuMod(value,divisor)参数数字值要进行计算的数字numberdivisor除法的除数示例uMod(10,3)//返回1uPow,uPower264SybaseETLuPow,uPower说明返回基数表达式取指定次方的值语法numberuPow(value,exponent)参数数字值要进行计算的数字numberexponent要用作指数的数字示例uPow(10,3)//返回1000uRandom说明返回随机数字语法numberuRandom()示例随机数uRandom()//返回类似"0.
696654639123727"这样的值uRound说明返回舍入到最近整数的参数语法numberuRound(value[,scale])参数数字值要进行计算的数字numberscale(可选)数字的位数示例uRound(10.
1)//返回"10"uRound(10.
49)//返回"10"uRound(10.
5)//返回"11"uRound(10.
9)//返回"11"uRound(1.
235,2)//返回"1.
24"附录A函数参考用户指南265uSgn说明返回给定值的符号语法numberuSgn(value)参数数字值要进行计算的数字示例uSgn(-10.
4)//返回-1uSgn(0)//返回0uSgn(10.
4)//返回1uSgn(null)//返回nulluSqrt说明返回给定值的平方根语法numberuSqrt(value)参数数字值要进行计算的数字示例uSqrt(25)//返回5uSqrt(0)//返回0uSqrt(null)//返回null脚本函数说明uEvaluate计算函数或JavaScript表达式,并返回结果uEvaluate266SybaseETLuEvaluate说明计算函数或JavaScript表达式,并返回结果语法stringuEvaluate(expression)参数数值表达式要计算的JavaScript代码示例计算函数表达式:uEvaluate("3+5")uEvaluate("parseFloat(IN.
Salary)+1500")定义自定义函数:uEvaluate("functiontimesTwo(a){returna*2;}")使用自定义函数:uEvaluate("timesTwo(4)")uEvaluate("timesTwo(IN.
Salary)")计算脚本:uEvaluate("if("parseFloat(IN.
Salary)>2000"){2000;}else{("parseFloat(IN.
Salary)+500");}")字符串函数说明uAsc,uUnicode返回指定字符的Unicode字符值uChr,uUniChr返回对应给定数字的Unicode字符串,或设置某个字符串的格式uCap返回字符串的大写表示uCon,uConcat将所有给定的参数并置成单个字符串uJoin用特殊的Null和空值处理方式并置分隔字符串uLeft返回字符串最左侧的N个字符uLength,uLen返回字符串的长度uSubstr,uMid返回字符串的一部分uLPos查找字符串中某个子字符串的第一个位置uLower,uLow返回小写字母的输入字符串uLStuff将字符串的左侧填充到指定的长度uLTrim从字符串的左侧删除字符附录A函数参考用户指南267uAsc,uUnicode说明返回指定字符的Unicode字符值.
语法numberuAsc(value[,index])参数stringvalue输入字符串numberindex(可选)用于读取ASCII值的字符位置示例uAsc("BigBen")//返回66uAsc("BigBen",2)//返回105uRepeat返回给定字符串重复N次后的结果uReplace替换字符串的某些部分uReverse颠倒字符串uRight返回字符串最右侧的N个字符uRPos在字符串中查找子字符串的最后一个位置uRStuff将字符串的右侧填充到指定的长度uRTrim从字符串的右侧删除字符uTrim从字符串的两侧删除字符uUpper,uUpp返回大写字母的输入字符串函数说明uChr,uUniChr268SybaseETLuChr,uUniChr说明返回对应给定数字的Unicode字符串,或设置某个字符串的格式语法stringuChr(params,.
.
.
)参数params表达式或值的列表示例uChr(64)//返回"@"uChr("\u0064\u006f\u0067")//返回"dog"uChr(65,"pple")//返回"apple"uCap说明返回字符串的大写表示.
换句话说,字符串中每个单词的第一个字母大写.
语法stringuCap(text)参数Inputtext要大写的字符串示例uCap('fArmeR,ASTROnaut')//返回'Farmer,Astronaut'uCap('thefirstweekend')//返回'TheFirstWeekend'uCon,uConcat说明将所有给定的参数并置成单个字符串语法stringuConcat(params)参数params任意数据类型的一系列表达式或值示例uConcat("For",3,"years.
")//返回"For3years.
"附录A函数参考用户指南269uJoin说明用特殊的Null和空值处理方式并置分隔字符串语法stringuJoin(delimiter,allowEmpty,params,.
.
.
)参数stringdelimiter要在其它所有字符串部分之间使用的分隔符numberallowEmpty标记(0/1),指示是否允许空字段stringparams要并置的字符串列表示例uJoin("-",1,"James","","Tiberius","Kirk")//返回"James--Tiberius-Kirk"uJoin("-",0,"James","","Tiberius","Kirk")//返回"James-Tiberius-Kirk"uLeft说明返回字符串最左侧的N个字符语法stringuLeft(input,chars)参数stringinput输入字符串numberchars要检索的字符数示例uLeft("JamesT.
Kirk",5)//返回"James"uLeft(null,5)//返回nulluLength,uLen270SybaseETLuLength,uLen说明返回字符串的长度语法numberuLength(input)参数stringinput输入字符串示例uLength("JamesT.
Kirk")//返回13uSubstr,uMid说明返回字符串的一部分语法stringuSubstr(input,position,length)参数stringinput输入字符串numberposition从其开始读取的位置numberlength要读取的字符数示例uSubstr("JamesT.
Kirk",7,2)//返回"T.
"uLPos说明查找字符串中某个子字符串的第一个位置.
结果为零表示未找到子字符串.
语法stringuLPos(input,substring)参数stringinput输入字符串stringsubstring要搜索的子字符串示例uLPos("JamesT.
Kirk","T")//返回7附录A函数参考用户指南271uLower,uLow说明返回小写字母的输入字符串语法stringuLower(input)参数stringinput要转换的字符串示例uLower("JamesT.
Kirk")//返回"jamest.
kirk"uLStuff说明将字符串的左侧填充到指定的长度语法stringuLStuff(input,length[,stuff])参数stringinput要填充的字符串numberlength字符串的新长度stringstuff(可选)要追加的字符串,缺省值为空格(ASCII32)示例uLStuff("3.
5",5)//返回"3.
5"uLStuff("3.
5",5,"0")//返回"003.
5"uLTrim说明从字符串的左侧删除字符.
如果省略第二个参数,则它缺省为空格字符(ASCII32).
语法stringuLTrim(input,trimstring)uRepeat272SybaseETL参数stringinput要剪裁的字符串stringtrimstring要调整的字符串示例uLTrim("3.
5")//返回"3.
5"uLTrim("003.
5","0")//返回"3.
5"uRepeat说明返回给定字符串重复N次后的结果语法stringuRepeat(input,repeats)参数stringinput要重复的字符串numberrepeats输入字符串的重复次数示例uRepeat("Hello",4)//返回"HelloHelloHelloHello"uReplace说明替换字符串的某些部分语法stringuReplace(input,search,replace)参数stringinput要处理的字符串stringsearch要搜索的模式stringreplace将替换任何匹配项的字符串示例uReplace("Atfouro'clockhebecamefour","four","4")//返回"At4o'clockhebecame4"附录A函数参考用户指南273uReverse说明颠倒字符串语法stringuReverse(input)参数stringinput要颠倒的字符串示例uReverse("Smith")//返回"htimS"uRight说明返回字符串最右侧的N个字符语法stringuRight(input,chars)参数stringinput输入字符串numberchars要读取的字符个数示例uRight("JamesT.
Kirk",4)//返回"Kirk"uRight(null,5)//返回nulluRPos说明在字符串中查找子字符串的最后一个位置语法stringuRPos(input,substring)参数stringinput输入字符串stringsubstring要查找的子字符串示例查找最后一次出现的子字符串:uRPos("JamesT.
Kirk","T")//返回7uRStuff274SybaseETLuRStuff说明将字符串的右侧填充到指定的长度语法stringuRStuff(input,length[,stuffstring])参数stringinput输入字符串numberlength结果字符串的新长度stringstuffstring(可选)要附加的字符串示例uRStuff("3.
5",5)//返回"3.
5"uRStuff("3.
5",5,"0")//返回"3.
500"uRTrim说明从字符串的右侧删除字符语法stringuRTrim(input[,trimstring])参数stringinput输入字符串stringtrimstring(可选)要调整的字符串示例uRTrim("3.
5")//返回"3.
5"uRTrim("3.
500","0")//返回"3.
5"附录A函数参考用户指南275uTrim说明从字符串的两侧删除字符语法stringuTrim(input[,trimstring])参数stringinput输入字符串stringtrimstring(可选)要调整的字符串示例uTrim("3.
5")//返回"3.
5"uTrim("003.
500","0")//返回"3.
5"uUpper,uUpp说明返回大写字母的输入字符串语法stringuUpper(input)参数stringinput输入字符串示例uUpper("JamesT.
Kirk")//返回"JAMEST.
KIRK"三角函数函数说明uAcos返回数字的反余弦值(以弧度为单位)uAsin返回数字的反正弦值(以弧度为单位)uAtan返回数字的反正切值(以弧度为单位)uCos返回数字的余弦值(以弧度为单位)uSin返回数字的正弦值(以弧度为单位)uTan返回数字的正切值(以弧度为单位)uAcos276SybaseETLuAcos说明返回数字的反余弦值(以弧度为单位)语法numberuAcos(value)参数数字值输入值uAsin说明返回数字的反正弦值(以弧度为单位)语法numberuAsin(value)参数数字值输入值uAtan说明返回数字的反正切值(以弧度为单位)语法numberuAtan(value)参数数字值输入值uCos说明返回数字的余弦值(以弧度为单位)语法numberuCos(value)参数数字值输入值附录A函数参考用户指南277uSin说明返回数字的正弦值(以弧度为单位)语法numberuSin(value)参数数字值输入值uTan说明返回数字的正切值(以弧度为单位)语法numberuTan(value)参数数字值输入值uTan278SybaseETL用户指南279附录B连接参数本附录描述了数据库配置选项,还提供了有关所支持的部分接口的其它信息.
特定于接口的数据库选项在特定于接口的数据库选项表中:连字符(-)表示数据库选项没有缺省值.
您可以输入合适的值.
"不可用"表示不为基础接口提供数据库选项.
"不使用"虽然显示数据库选项,但基础接口并不使用这些选项.
主题页码特定于接口的数据库选项279数据库和接口支持284使用SQLitePersistent接口284使用Oracle接口286DB选项接口及缺省值说明OracleODBC/DB2Sybase15SybaseOLEDBSQLitePersistentAlwaysuselogoncredentials不可用0不可用不可用不可用不可用当生成ODBC连接字符串时,每次均会将凭证添加到连接字符串中.
APItrace不可用不可用FalseFalse不可用不可用启用CTLIB跟踪功能.
APIversion不可用不可用150125不可用不可用CTLIBAPI版本的兼容性.
Autovacuum不可用不可用不可用不可用不可用0当从数据库删除对象时将空间释放出来.
特定于接口的数据库选项280SybaseETLBLOBchunksize1024从文件提取LOB数据时,ETL每次从文件中提取1024字节并将其写入数据库中.
不可用不可用不可用不可用不可用确定LOB在多大时将被截断.
BLOBfetchmodeLOB_INLINEINLINE不可用不可用不可用不可用BLOB数据将写入辅助文件或保存在内存中.
如果设置为"INLINE",则数据将保存在内存中.
如果设置为"FILE",则数据将暂时写入磁盘中.
Busytimeout不可用不可用不可用不可用不可用10创建一个处理程序,在遇到锁定的数据库表时等待指定的秒数.
Cachesize不可用不可用不可用不可用不可用3000高速缓存中要使用的页数.
CLIENT_CHARSET不可用不可用--不可用不可用与ClientLibrary(CTLIB)一起使用的由用户定义的字符集.
CLIENT_CONVERSION不可用不可用0(ASE)1(ASA/IQ)0(ASE)1(ASA/IQ)不可用不可用控制ClientLibrary是否应将数据转换为相应形式.
Connecttimeout0(不使用)0(不使用)00100在经过"Connecttimeout"设置的秒数后停止连接尝试.
如果设置为0,则连接不会超时.
CONVERTER_CHARSET不可用不可用--不可用不可用CLIENT_CONVERSION=1时使用的字符集.
数据库名称不可用不可用--不可用不可用数据库名称.
DBMS_VER不可用不可用--不可用不可用数据库的版本.
Defaultcachesize不可用不可用不可用不可用不可用3000高速缓存中使用的缺省页数.
Disconnecttimeout不可用10在32位Windows中,ETL始终使用缺省值.
在其它平台上,不使用此选项.
不可用不可用不可用不可用试图从数据库断开时,如果在n秒内未收到数据库的答复,则强制从数据库断开.
DB选项接口及缺省值说明OracleODBC/DB2Sybase15SybaseOLEDBSQLitePersistent附录B连接参数用户指南281EnableSQLServerfastload不可用不可用不可用不可用1不可用如果此选项设置为1,则会启用MSSQLServer快速装载功能.
如果设置为0则会禁用此功能.
Executiontimeout0(不使用)0/不使用-1-1不可用0经过一定的时间间隔(秒)后组件将停止执行.
(0.
Internaldatabase不可用不可用不可用不可用不可用-数据库引用.
隔离级别DEFAULT(不使用)DEFAULTDEFAULT(不使用)DEFAULT(不使用)不可用DEFAULT(不使用)定义某个事务必须与其它事务作出的资源修改或数据修改相互隔离的级别.
Lockresultsetdata0(不使用)00(不使用)0(不使用)不可用0查询表将被锁定,这可确保当进程正在使用选定的记录集时不会向该记录集中写入任何数据.
从选定的记录集中提取完最后一条记录后,将释放该记录集.
LogSQLstatementstoafile000000如果设置为1,则所有SQL语句均将记录到日志或SQL.
log文件中.
Numericsupport不可用0当DBMS为IQ或ODBC驱动程序为ASA9时,此值为0而非用户输入的值.
不可用不可用不可用不可用是否要启用ODBC数值支持.
Objectnameendquote"-ODBC使用从DBMS查询得到的值,而不使用用户输入.
]]-不可用创建SQL语句时,终止字符将用作引号.
DB选项接口及缺省值说明OracleODBC/DB2Sybase15SybaseOLEDBSQLitePersistent特定于接口的数据库选项282SybaseETLObjectnamestartquote"""ODBC使用从DBMS查询得到的值,而不使用用户输入.
[[-不可用生成SQL语句时将用作引号的起始字符.
PAD_BLANKS不可用不可用00不可用不可用使用空格字符保持固定列宽.
Pagesize不可用不可用不可用不可用不可用4096每页字节数.
必须是2的幂、大于或等于512而且不得大于32768.
Quotecharacter"不可用不可用不可用不可用不可用与QUOTE_START和QUOTE_END相同.
Quoteobjectnames0(不使用)00000若设置为1,则将使用在QUOTE_START和QUOTE_END中指定的字符来括起所生成SQL语句中的标识符.
Rejectlogcolumndelimiter选项卡选项卡选项卡选项卡-选项卡用作拒绝日志中的列分隔符.
Shortcolumnnames不可用不可用不可用不可用不可用0如果标志设置为false,则对列名进行完全限定,否则只需列名即可引用列.
Showalltables不可用不可用0(不使用)0(不使用)不可用不可用显示系统表及用户表.
Showerrorlocation111111设置为1时将显示错误所在的位置.
数据库错误包含结果集内的记录所在的位置.
SHOW_ERROR_LOCATION_ABSOLUTE_ROWS111111显示从结果集的绝对起始处算起的错误位置而非当前结果集.
Synchronous不可用不可用不可用不可用不可用0如果选择Full=2,则SQLite会确保在继续执行前将数据写入磁盘中.
如果选择Normal=1,SQLite将暂停以在重要时刻写入,但不如设置为2时频繁.
如果选择Off=0,则数据将传递给操作系统且SQLite会继续执行.
DB选项接口及缺省值说明OracleODBC/DB2Sybase15SybaseOLEDBSQLitePersistent附录B连接参数用户指南283Tempstore不可用不可用不可用不可用不可用2如果设置为1,则临时数据库所在的位置为文件.
如果设置为2,则临时数据库所在的位置为内存.
Treatnumericvalueascharacter不可用1如果数据库为IQ,或者驱动程序的名称包含"SYSYBNT"或"LIBDB2.
A",则ODBC将使用1而非用户输入的值.
不可用不可用不可用不可用将数值数据强制转换为字符串.
UsesystemviewsTrue不可用不可用不可用不可用不可用使用DBA系统表来显示元数据而非每个用户的元数据.
Validateresultcolumnbinding不可用不可用不可用不可用1不可用如果设置为1,则会在从数据库读取数据时对结果列映射的绑定进行验证.
WriteemptydatesasNULL000(不使用)0(不使用)不可用不可用如果设置为1,则会将空日期的值强制为NULL.
Writerejectedrecordstofile指定拒绝日志的文件路径.
此选项用于记录装载时数据库所拒绝的记录.
DB选项接口及缺省值说明OracleODBC/DB2Sybase15SybaseOLEDBSQLitePersistent数据库和接口支持284SybaseETL数据库和接口支持下表列出了适用于各种数据库组件类型的接口和数据库.
表B-1:数据库和接口支持矩阵SybaseETL环境已经过充分测试、评估和验证,它与支持的数据库系统的许多接口驱动程序相符.
如果遇到可能与驱动程序兼容性相关的意外结果,请尝试安装接口驱动程序的支持版本之一.
有关SybaseETL4.
9支持的所有接口驱动程序版本的列表,请参见SybaseETL4.
9发行公告的"接口支持".
使用SQLitePersistent接口SybaseETL技术包含用于临时数据存储和暂存的内置式通用关系数据库.
它基于SQLite这一速度极高、使用广泛且符合SQL92绝大部分要求的数据库.
SQLite是一种小型C库,它实现了自我包含的可嵌入零配置SQL数据库引擎.
InterfaceDBDataProvider和DBLookupDBDataSinkDBBulkLoadSybaseIQDBStagingIQLoaderFileviaLoadTableIQLoaderDBviaInsertLocationSQLExecutorSybaseASEIQIQIQASEASAIQIQIQASEIQODBC可通过ODBC访问的任何数据源.
IQIQIQASAASEIQ不支持ASEIQSQLServerOracleOLEDBSQLServer不支持不支持不支持不支持不支持SQLServerOracle可通过OracleCallInterface(OCI)访问的任何Oracle数据库系统.
不支持不支持不支持不支持不支持OracleDB2可通过IBMDB/2客户端接口访问的任何DB2数据库系统.
不支持不支持不支持不支持不支持DB2附录B连接参数用户指南285连接到SQLite数据库SQLite数据库用一个带有.
db扩展名的单个文件来表示.
该数据库文件可以包含任意数目的表.
创建或连接至SQLite数据库文件1在"Properties"窗口中,从"Interface"菜单中选择"SQLitePersistent".
2提供SQLite数据库文件的主机名.
若要创建新的SQLite数据库文件,请在"HostName"字段中提供名称,但不要将.
db扩展名包含在内.
将在缺省位置,即安装文件夹下的database目录中自动创建带有.
db扩展名的新SQLite数据库文件.
若要在非缺省目录中创建SQLite数据库文件,请在"HostName"字段中指定包含.
db扩展名的完整路径.
如果要连接至缺省目录中的现有SQLite数据库文件,请从"HostName"菜单中选择文件名.
不要输入.
db扩展名.
若要连接至非缺省目录中的SQLite数据库文件,请在"HostName"字段中指定包含.
db扩展名的完整路径.
例如,若要创建一个新的SQLite数据库文件mySQLite.
db或连接至现有mySQLite.
db数据库文件,请使用以下参数:接口:SQLitePersistent主机名:mySQLite创建SQLite表用以下方法之一创建SQLite表:右键单击Staging组件,然后选择"CreateStagingTablefromInput"或"CreateStagingTablefromPort".
右键单击DataSink组件中的一个,然后选择"AddDestinationTablefromInput"或"AddDestinationTablefromPort".
从SQLite数据库提取数据为DB组件上的SQLite数据库文件提供相应的连接参数.
使用Oracle接口286SybaseETL可以在连接到数据库的组件的预处理或后处理SQL属性中使用SQLite支持的SQL命令.
使用"Tools"菜单中的"ContentExplorer"可以在项目中操作或浏览连接至组件的SQLite数据库对象.
还可以使用从sqlite.
org获取的客户端应用程序连接到SQLite数据库文件.
注意若要使用外部客户端应用程序连接到SQLite数据库文件,您必须熟知SQLite的锁定策略.
使用Oracle接口表B-2列出了从SybaseETL数据类型到Oracle数据类型的类级别转换.
表B-2:从Oracle接口到SybaseETL的数据类型映射ETL数据类型Oracle数据类型大小/精度最小标度最大标度二进制BLOB2147483647二进制BFILE2147483647二进制RAW200000字符串CLOB214748364700字符串CHAR200000floatDECIMAL3800整数NUMBER3800floatDOUBLEPRECISION15038datetimeDATE1900datetimeTIMESTAMP2809字符串VARCHAR2400000unicodeNCHAR100000unicodeNVARCHAR2200000unicodeNCLOB214748364700用户指南287附录C将ETL用于渐变维度本章对渐变维度(SCD)进行了概述.
它列出了一些常见的SCD应用场景并说明如何使用ETL项目和作业实现这些应用场景.
概述渐变维度是一种常用的数据仓库技术应用场景.
SCD利用三种不同的方法类型来处理对数据仓库维度表中列的更改.
类型1在类型1中,新数据将覆盖现有数据.
现有数据将丢失,并且不会跟踪历史更改.
类型1是最便于支持的方法,但只有在您不需要跟踪历史更改时才有用.
假设有一个保存产品信息的表:笔记本电脑的价格涨到1500.
更新后的表直接覆盖当前记录:类型2类型2保留值的完整历史记录.
如果新数据与旧数据不同,将用新数据值创建附加维度记录,并且该记录将成为当前记录.
每条记录都包含有效日期和到期日期,用以标识该记录处于活动状态的时间段.
使用类型2可以保留表中维度数据的完整历史记录.
请参见第288页上的"案例研究应用场景".
主题页码概述287案例研究应用场景288为SCD设置ETL项目291KeyNamePrice1Notebook1200KeyNamePrice1Notebook1500案例研究应用场景288SybaseETL类型3类型3使用单独的列跟踪更改.
有一个版本的维度记录用来存储所选属性的先前值和当前值.
当您需要跟踪仅在有限时间内发生的历史更改时,请使用类型3.
假设有一个保存产品信息的表:笔记本电脑的价格在2008年7月15日涨到1500.
为容纳类型3,添加了CurrentPrice和EffectiveDate这两个新列:注意因为只有在进行非常重要的更改时才应修改维度表的结构,所以很少使用第3类.
案例研究应用场景本节提供了第2类SCD的案例研究应用场景,并说明如何在SybaseETL中创建转换项目来实现此应用场景.
案例说明您有两个表:PRODUCT,位于日常运作数据库或源数据库中.
PRODUCT_PRICE,位于数据仓库或目标数据库中.
此表跟踪源表(PRODUCT)中产品随时间的变化发生的修改,如:现有产品的价格的更改新增的产品删除的产品PRODUCT表的数据库表模式如下:KeyNamePrice1Notebook1200KeyNameOriginalpriceCurrentpriceEffectivedate1Notebook120015002008-07-15列说明Key产品的唯一IDName产品的名称Price产品的价格附录C将ETL用于渐变维度用户指南289PRODUCT_PRICE表的数据库表模式如下:规则将维度从PRODUCT表传送到PRODUCT_PRICE表的规则为:1如果相应记录在PRODUCT_PRICE表中不存在,则使用与PRODUCT表相同的列值创建该记录.
将ValidFrom日期设置为记录插入日期,将ValidTo日期设置为9999-12-31.
2如果相应记录在PRODUCT_PRICE表中存在,但未进行任何更改,则不要插入新记录或更新现有记录.
3如果相应记录在PRODUCT_PRICE表中存在,且记录的价格已更改:将带有旧价格的记录的ValidTo日期设置为昨天.
创建一条新记录.
将ValidFrom日期设置为记录插入日期,将ValidTo日期设置为9999-12-31.
4如果相应记录在PRODUCT_PRICE表中存在,但已从PRODUCT表中删除,则将PRODUCT_PRICE表中产品的ValidTo日期设置为昨天.
注意基于以上规则,在PRODUCT_PRICE表中维护维度更改的不间断历史记录.
工作原理在2008年1月1日最初装载后,PRODUCT表显示:列说明Key源表(PRODUCT)中的源键标识符Name产品的名称Price产品的价格ValidFrom新记录的插入日期ValidTo记录的失效日期.
将新记录插入PRODUCT_PRICE表时,具有相同源键的记录将失效.
KeyNamePrice1Notebook12002监视器10003Mouse500案例研究应用场景290SybaseETLETL进程首次运行后,PRODUCT_PRICE表显示如下:在2008年1月15日,显示器的价格修改后,PRODUCT表更新.
重新运行ETL进程后,PRODUCT_PRICE表显示如下:在2008年1月22日,添加硬盘这一新产品后,PRODUCT表再次更新.
重新运行ETL进程后,PRODUCT_PRICE表显示如下:KeyNamePriceValidfromValidto1Notebook12002008-01-019999-12-312监视器10002008-01-019999-12-313Mouse5002008-01-019999-12-31KeyNamePrice1Notebook12002监视器14003Mouse500KeyNamePriceValidfromValidto1Notebook12002008-01-019999-12-312监视器10002008-01-012008-01-143Mouse5002008-01-019999-12-312监视器14002008-01-159999-12-31KeyNamePrice1Notebook12002监视器14003Mouse5004HardDisk1000KeyNamePriceValidfromValidto1Notebook12002008-01-019999-12-312监视器10002008-01-012008-01-143Mouse5002008-01-019999-12-312监视器14002008-01-159999-12-314HardDisk10002008-01-229999-12-31附录C将ETL用于渐变维度用户指南2912008年7月28日,PRODUCT表再次更新,以将作为可用产品的鼠标删除.
重新运行ETL进程后,PRODUCT_PRICE表显示如下:为SCD设置ETL项目本节介绍使用项目和作业完成第2类SCD的ETL概念.
随产品打包提供的演示存储库包括与类型2使用案例有关的各种ETL转换对象,其中包括:项目DemoProductPriceSCD–InitialLoad此项目初始化或重新初始化SCD–Update项目SCD–更新项目和作业.
注意该项目不是使用案例实现的一部分.
在生产环境中,对空目标表首次执行"UpdateNewandModified"项目时将执行初始装载,其中所有源记录将作为新记录处理.
由于演示环境使用两个不同的表来模拟对源数据的更改,因此始终需要在目标表中恢复原始数据,方法是在运行其它两个更新项目或作业之前执行该项目.
DemoProductPriceSCD–UpdateNewandModified此项目每天更新目标数据库的维度表,以反映源数据库中产品的修改或添加情况.
请参见第288页上的"案例研究应用场景"中的规则1至规则3.
KeyNamePrice1Notebook12002监视器14004HardDisk1000KeyNamePriceValidfromValidto1Notebook12002008-01-019999-12-312监视器10002008-01-012008-01-143Mouse5002008-01-012008-07-272监视器14002008-01-159999-12-314HardDisk10002008-01-229999-12-31为SCD设置ETL项目292SybaseETL若要完成完全更新,还应执行SCD-UpdateDeleted项目.
DemoProductPriceSCD–UpdateDeleted此项目每天更新目标数据库的维度表,以反映源数据库中产品的删除情况.
请参见第288页上的"案例研究应用场景"中的规则4.
若要完成完全更新,还应执行"SCD–UpdateNewandModified"项目.
作业DemoProductPriceSCD–DailyUpdate此作业执行SCD–UpdateNewandModified和SCD–UpdateDeleted项目,并提供用于对目标维度表执行完全更新的单个转换对象.
在执行此作业之前,应执行SCD–InitialLoad项目.
了解目标维度表标识目标记录目标维度表包含同一源键的多条记录.
为区分记录的当前版本和历史版本,目标维度表使用复合键,这种键包括源键及有效日期或到期日期属性.
ETL演示项目使用ValidFrom日期属性作为该键的一部分.
当前目标记录源表中的每条记录都恰好由目标表中的一条当前记录表示.
检查目标维度表时,只有当前记录与SCD相关.
在ETL演示项目中,当前记录的ValidTo日期为9999-12-31.
检测源更改本节介绍如何捕获源表中的更改,包括新的源记录、修改的源记录以及已从源中删除的记录.
可以将各种方法组合使用,在一个步骤中检测不同类型的数据更改.
在此案例研究应用场景中,源数据库不包含任何更改日志信息,所以要检测任何更改,必须将源内容与目标内容进行比较.
由于在大多数情况下,源对象和目标对象不在同一数据库中,因此需要执行异构连接.
附录C将ETL用于渐变维度用户指南293检测新的源记录在目标维度表上次更新后添加到源表中的记录在目标维度表中没有对应的当前记录.
1所有源记录均使用相应的数据提供程序组件进行读取.
有关数据提供程序组件的列表,请参见第88页上的"源组件".
注意尽管只需要检测键属性,但会读取传送到目标维度表的所有属性.
2对于每条源记录,都会根据源键属性检查目标维度中是否存在对应的当前记录.
a选择相应的查找组件.
请参见第136页上的"查找组件".
若要对要传输的数据进行计算,可以考虑使用DataCalculator组件的查找功能.
请参见第125页上的"DataCalculatorJavaScript".
b从目标中选择查找数据.
因为这是一项简单的存在性检查,所以只需要从所有当前目标记录中选择原始源键.
不过,在ETL中进行的查找始终返回键的值,因此还必须选择相应的返回值.
c向端口结构添加一个属性以填充查找结果.
根据查找结果可以确定源记录是新添加的还是以前就存在的.
此属性指示数据状态,并可用于在转换过程的下一步中对数据进行过滤.
请参见第84页上的"修改端口结构".
选择此新属性作为查找组件的值属性或DataCalculator中的输出属性.
d设置适当的查找缺省值.
查找不存在的键时,将返回该缺省值.
为确保查找值正确指出记录是否存在,请将其设置为不同于任何现有键的所有查找值的常量.
示例:源数据–selectKey,Name,PricefromPRODUCT查找数据–selectKey,'1'fromPRODUCT_PRICEwhereValid_To='9999-12-31'值属性–Exists(integer)缺省值–0执行此查找将得到具有Key、Name、Price、Exists属性的记录.
对于目标中的所有记录,Exists属性的值将为1(查找值);对于所有非现有记录,Exists的值将为0(缺省值).
为SCD设置ETL项目294SybaseETL检测修改的源记录目标维度表上次更新后在源表中修改的记录在目标维度表中具有对应的当前记录,但相关值已更改.
1所有源记录均使用相应的数据提供程序组件进行读取.
请参见第88页上的"源组件".
注意尽管只需要检测键属性,但会读取传送到目标维度表的所有属性.
2对于每条源记录,都会根据源键属性检查目标维度表中是否存在对应的当前记录,并对值进行比较.
a选择相应的查找组件.
使用DataCalculator组件可以查找单个键属性的多个值并对这些值进行比较.
请参见第125页上的"DataCalculatorJavaScript".
b从目标中选择查找数据.
对于所有当前目标记录,要比较的键属性和所有值将使用相应的数据提供程序组件进行读取.
请参见第88页上的"源组件".
c向端口结构添加一个属性以填充其它目标键属性.
根据查找结果可以确定源记录是已经过修改还是新的或未经改动.
此属性指示数据状态,并可用于在转换过程的下一步中对数据进行过滤.
对目标执行的更新操作必须唯一标识当前记录,因此目标键的日期部分也需要填充.
请参见第84页上的"修改端口结构".
d设置适当的查找缺省值.
查找不存在的键时,将返回该缺省值.
为确保查找值正确指出记录是否存在,请将其设置为不同于现有键的所有查找值的常量.
e查找所有必需的目标值.
第一次查找时,将新的目标键属性用作DataCalculator中的输出属性,从而指示是否存在.
将要比较的值将读入到临时变量中.
f比较源属性值和目标属性值.
将根据现有记录的值比较结果重新计算目标键属性.
示例:源数据–selectKey,Name,PricefromPRODUCT查找数据–selectKey,Valid_From,PricefromPRODUCT_PRICEwhereValid_To='9999-12-31'附录C将ETL用于渐变维度用户指南295首先通过从目标读取有效日期来检查是否存在:输出属性–Valid_From缺省值–0将当前目标价格读入到临时变量中:输出属性–Tmp_Price缺省值–0如果当前目标记录存在(Valid_From不为0),则比较Price和Tmp_Price.
如果Price尚未更改,则将Valid_From重新计算为0.
执行这些查找和计算将产生具有Key、Name、Price和Valid_From属性的记录.
Valid_From包含要更新的目标记录的有效日期,或者包含0,表示新记录和未更改的记录.
检测删除的源记录在目标维度表上次更新后已从源表中删除的记录在目标维度表中仍具有对应的当前记录.
1目标维度表中所有当前记录的键值都使用相应的数据提供程序组件进行读取.
请参见第88页上的"源组件".
2对于每条当前目标记录,都会根据源键属性检查源中是否存在对应的记录.
a选择相应的查找组件.
请参见第136页上的"查找组件".
如果源数据不在数据库中,请使用DataCalculator组件的查找功能.
请参见第125页上的"DataCalculatorJavaScript".
b从源中选择查找数据.
因为这是一项简单的存在性检查,所以只需要从所有源记录中选择源键.
但是,ETL中的查找始终返回键的值,因此必须同样选择合适返回值.
c向端口结构添加一个属性以填充查找结果.
根据查找结果可以确定源记录是否已删除.
此属性指示数据状态,并可用于在转换过程的下一步中对数据进行过滤.
选择此新属性作为查找组件的值属性或DataCalculator规则的输出属性.
请参见第84页上的"修改端口结构".
d设置适当的查找缺省值.
查找不存在的键时,将返回该缺省值.
为确保查找值正确指出记录是否存在,请将其设置为不同于现有键的所有查找值的常量.
为SCD设置ETL项目296SybaseETL示例:目标数据–selectKey,Valid_FromfromPRODUCT_PRICEwhereValid_To='9999-12-31'查找数据–selectKey,'0'fromPRODUCT值属性–Removed(integer)缺省值–1执行此查找将产生具有Key、Valid_From、Removed属性的记录.
对于所有现有源记录,Removed属性的值都将为0(查找值);对于所有非现有记录,Removed属性的值都将为1(缺省值).
替代方法如果源是为插入、更新或删除操作提供升序指示符(如自动增量、修改日期等)的数据库,则DBDataProviderIndexLoad组件只能用于读取自上次装载以来更改的记录.
请参见第91页上的"DBDataProviderIndexLoad".
使用Staging组件将源和目标中的相关数据装载到同一数据库.
然后,将通过使用完全外部连接从暂存位置提取数据,检测新的、修改的和删除的记录.
请参见第142页上的"DBStaging".
过滤记录使用DataSplitter组件,除了可以将数据流拆分为多个输出之外,还可以从数据流中删除记录.
请参见第131页上的"DataSplitterJavaScript".
若要从数据流中删除记录,请为每个输出端口定义条件,使要删除的记录不与其中的任何条件匹配.
若要输出单个数据流,请通过删除其中一个缺省输出端口,用单个输出端口配置DataSplitter.
附录C将ETL用于渐变维度用户指南297填充目标维度表为目标属性赋值使用DBDataSink组件的插入和更新选项,为不包括在入站数据流中的那些目标属性赋值.
对于在一次执行过程中处理的所有记录,目标属性的值是常量,但是这些值可以用SBN表达式进行动态初始化.
请参见第164页上的"DBDataSinkInsert"和第169页上的"DBDataSinkUpdate".
在ETL演示项目和作业中,插入选项使用以下值:Dynamic–对ValidFrom日期属性使用'[uDate('now','localtime')]'(今天).
Static–对ValidTo日期属性使用'9999-12-31'.
更新选项对ValidTo日期属性使用动态值'[uDate('now','localtime','-1day')]'(昨天).
执行部分更新DBDataSink组件的更新选项允许更新一部分属性,而不是更新完整的记录.
要将属性排除在更新范围之外,您应在更新选项窗口中取消选择相应属性.
请参见第169页上的"DBDataSinkUpdate".
在ETL演示项目中,通过更新ValidTo日期属性,即可使旧记录过期.
为SCD设置ETL项目298SybaseETL用户指南299附录D最佳实践本附录介绍使用SybaseETL的最佳实践.
使用ETLServer的最佳实践避免启动多个ETLServer会话如果在ETLDevelopment运行时从命令行启动ETLServer,ETLDevelop-ment会变得不稳定,若在ETLDevelopment中执行任何操作,它将显示错误消息.
出现这种情况的原因是,从命令行启动的ETLServer会话与由ETLDevelopment启动的ETLServer会话之间发生冲突.
若要避免启动多个服务器会话,请在"Preferences"窗口中,取消选择"Engine"|"Startlocalengineduringapplicationstartup".
这会防止在您下次启动ETLDevelopment时自动启动ETLServer会话.
输入缺省端口号以执行命令行如果您尝试使用缺省端口号5124,但不在命令行中包括此端口号,则命令行执行会失败.
为了避免出现此问题,必须在命令行中输入缺省端口号5124.
例如:GridNode-con--port5124--serverlocalhost-f".
.
\\testdata\\tpms\\tpms_TestB.
xml"主题页码使用ETLServer的最佳实践299使用ETL组件的最佳实践300使用国际化的最佳实践303使用ETL组件的最佳实践300SybaseETL输入查询时使用列的别名查询结果集的输出列名称由源数据库生成.
将函数应用于查询中的属性时,对于不同的数据库,输出列名也不同,输出列名可以与源列名无关.
您可以在输入查询时添加列别名,从而定义要用作端口属性名而且将显示在DataViewer中的自定义列名称.
例如,使用集合函数查询ASE数据库时,ContentBrowser中所显示的查询结果中将不包含集合数据列的列标题.
若要添加列标题,请在使用集合函数的属性所在的行上添加别名值.
如果查询为:SELECTCOUNT(qsID)FROMTAB_IDS,则将为返回列添加别名值,如下所示:SELECTCOUNT(qsID)ASqsID_COUNTFROMTAB_IDS请勿在事务性项目中执行DDL操作对于DDL事务来说,不同的数据库目标或接口组合具有不同的行为,因此要避免在事务性项目的SQL预处理和后处理过程中执行DDL操作.
如果需要的话,可以在非事务性项目中执行DDL操作.
例如,创建一个包含3个项目的作业:非事务性设置项目(包括DDL)事务性项目非事务性清理项目(包括DDL)使用ETL组件的最佳实践迁移宽表迁移具有成百上千个列的表会消耗大量内存.
在将具有不同列数和行数的多个宽表从SybaseIQ源数据库迁移到SybaseIQ目标数据库时,为了避免发生错误,请遵循下列建议:为SQLAnywhere存储库分配1GB的数据库空间,并将所有其它值保留为系统缺省值.
附录D最佳实践用户指南301使用以下方法、组件和接口来迁移具有大量列的表:注意当迁移的表含有的列多于3000时,您可能会在移动大量行时遇到性能问题.
导入具有32个以上同级元素的XML文件若要使用XMLviaSQLDataProvider组件导入32个以上同级元素,请将该组件"XMLOptions"属性中的"CreateFlatView"设置为0.
必须使用ContentExplorer手动设置子查询.
将源文本文件的最后一行装载到SybaseIQ当使用IQLoaderFileviaLoadTable组件时,如果源文本文件的最后一行不以尾随行分隔符结尾,SybaseIQ不会从ETL接受源文本文件的最后一行.
为了避免出现此问题,在源文本文件最后一行的结尾添加行分隔符.
例如,在Windows中,由于行分隔符指定为CRLF,因此将光标放在最后一行结尾,按Enter即将行分隔符添加到最后一行.
配置AdaptiveServerEnterprise以进行批量复制如果要将AdaptiveServerEnterprise用于DBStaging,必须首先配置AdaptiveServer数据库以进行批量复制.
如果未配置AdaptiveServer,尽管项目会成功执行,您仍会遇到错误.
列数迁移方法使用接口多达3000列InsertLocation组件Sybase多达3000列LoadTable组件Sybase或ODBC多达3500列迁移向导注意由于内存限制,或者如果您未使用SQLAnywhere存储库,迁移向导可能无法生成迁移项目.
Sybase或ODBC多达10000列LoadTable组件ODBC使用ETL组件的最佳实践302SybaseETL添加35个以下的DataCalculatorJavaScript和DBStaging组件确保不要为一个项目添加35个以上的DataCalculatorJavaScript和DBStaging组件.
增加AdaptiveServerODBC驱动程序的文本大小当text或image数据值大于在MicrosoftWindowsODBC配置中为该驱动程序设置的值时,AdaptiveServerODBC驱动程序会对其进行截断.
必须增加ODBC控制面板中的文本大小值,或者在数据库连接的数据库选项参数中设置该值,以避免出现此问题.
使用控制面板增加文本大小值1选择"控制面板"|"管理工具"|"数据源(ODBC)",然后在"用户DSN"或"系统DSN"选项卡中选择AdaptiveServerEnterprise的数据源.
2选择"配置"以显示"ODBCAdaptiveServerEnterpriseSetup"窗口,然后选择"高级".
3将"TextSize"的值更改为大于32KB(缺省值)的值.
AdaptiveServerODBC驱动程序会截断任何大于此处所设置值的数据值.
使用数据库选项增加文本大小值1在数据库连接的"Properties"窗口中,双击"DatabaseOptions"字段的编辑图标以显示"EnterProperties"窗口.
2在"ExtendedConnectOptions"字段中,输入"TEXTSIZE=N",其中N为要设置的文本大小值.
当在不同平台上执行项目时,不得更改源文本文件中的分隔符如果在Windows上使用TextDataProvider组件创建项目,然后在UNIX或Linux上执行该项目,请确保不要将源文本文件转换为UNIX或Linux格式.
源文本文件中使用的分隔符应当始终与TextDataProvider组件中设计的分隔符相同.
如果分隔符不一致,则会发生执行错误.
附录D最佳实践用户指南303在Windows上设置命名管道权限对于DBBulkLoadSybaseIQ组件,如果希望在"LoadStage"属性字段中提供管道名,必须首先进行以下设置,以免发生任何错误:1转至"控制面板"|"管理工具"|"本地安全策略"|"本地策略"|"安全选项".
2在"策略"列表中双击"网络访问:可匿名访问的命名管道".
3将您的命令管道添加到现有列表中.
例如,如果管道名为"pipe://mypipe",请将"mypipe"添加到列表中.
单击"应用".
4单击"确定".
将表迁移到包含LOB列的IQ在通过"InsertLocation"组件将表迁移到包含字符大对象(CLOB)、二进制大对象(BLOB)、具有IQLoaderDB的图像或文本列的IQ之前,请检查IQ配置.
IQ参数LOAD_MEMORY_DB控制有多少系统内存IQ用于管理这些类型的列.
缺省情况下,IQ将此参数设置为0,意味着无限制用于处理这些请求的内存使用.
您可能会看到以下错误消息:ASAError-1006042:Allavailablevirtualmemoryhasbeenused;allocationcancelled:Extrainfo:948472704].
如果将此参数设置为特定值(例如,300(MB)),IQ将只使用指定数量的内存来处理这些请求,并防止发生错误.
有关IQ参数的详细信息,请参见SybaseIQ12.
7参考手册中的第2章"数据库选项".
使用国际化的最佳实践正确分析具有字节顺序标记的源文件如果要使用"FixedbyBytes"属性分析文件,请确保源文件不包含任何字节顺序标记.
分析之前,使用文本编辑器删除源文件中的字节顺序标记.
使用国际化的最佳实践304SybaseETL设置ETL以支持UTF-8编码提供给uSetEnv函数的参数不能包含多字节字符或非西方字符.
必须设置ETL以支持UTF-8.
例如:setLANG=zh.
UTF-8选择正确的字符集编码以正确显示Unicode字符当您使用"TextDataProvider"或"TextDataSink"组件装载字符数据时,除非为具有字节顺序标记(BOM)的Unicode文件的字符集编码选择正确的"endianness"类型,否则字符会显示不正确.
若要正确显示Unicode字符,请在组件配置窗口的"CharacterEncoding"字段中,为字符数据选择具有正确"endianness"类型的字符集编码.
例如,选择:UTF-16LE–处理以UTF-16LE编码的文本文件,这些文件在文件开头具有BOM,其中LE表示"little-endian",因为BOM位于文件开头.
UTF-16BE–处理以UTF-16BE编码的文本文件,这些文件在文件结尾具有BOM,其中BE表示"big-endian",因为BOM位于文件结尾.
用户指南305A安排项目34作业37安排任务管理作业日程表53RuntimeManager53B编辑存储库13编辑警报80布尔函数ulsAscending212ulsBoolean213ulsDate213ulsDescending214ulsFloat215ulsIEmpty215ulsInteger215ulsNull216ulsNumber216CCDCProviderSybaseReplicationServer105创建和删除复制115配置114配置输出端口116配置之前105设置复制定义选项115属性116CharacterMapper121导出映射定义123导入映射定义123添加到项目121演示123映射符号122组件窗口121ContentExplorer打开51CopySplitter124管理输出端口124配置124参数集67创建68复制68管理67删除68修改68参数值编辑69将同一值分配给多个属性69选择69查看模拟流31已映射的属性30查找函数uChoice245uElements247uFirstDifferent246uFirstNotNull246uToken247查找组件DBLookup136DBLookupDynamic139创建参数集68从模板创建数据模型42警报79客户端13客户端用户13模板41索引索引306SybaseETL项目25用户14作业35创建第一个项目添加DataCalculator45添加数据接收器44添加数据提供程序43,44存储库编辑13打开12导航和浏览11,13概述3关闭存储库连接12管理11,12恢复初始数据源组22浏览13删除13设置新用户10添加12错误日志51演示194组件194错误处理函数uError236uErrortext236uInfo237uTrace238uTracelevel238uWarning237DDataCalculator添加到项目45DataCalculatorJavaScript125编辑转换规则128查找129Flash演示130模拟128添加到项目125添加转换规则128映射端口属性126转换结果127组件窗口126DataSplitterJavaScript拆分入站数据132特定端口条件133添加和配置131演示134自定义端口条件132DataSplitterJavascript包含端口条件132排斥端口条件131,132DBBulkLoadSybaseIQ149数据库空间159添加到项目149,179,184添加新的目标表150DBDataProviderFullLoad属性89DBDataProviderIndexLoad91属性91添加到项目88,91,135演示90,94重置升序索引值91DBDataSinkDelete160配置160添加到项目160演示164DBDataSinkInsert164从输入端口添加目标表165从现有端口添加目标表165Flash演示168目标表165添加到项目164写入目标表165DBDataSinkSynchronizeFlash演示178演示178DBDataSinkUpdate169添加到项目169演示173DBLookup136Flash演示139示例137索引用户指南307添加到项目137DBLookupDynamic139示例140添加到项目139演示142DBStaging142添加到项目143演示147打开ContentExplorer51存储库12QueryDesigner48端口结构复制85管理84删除属性31添加属性31端口属性管理31对参数列表进行排序69按多个列69按一个列69多引擎执行缩短作业执行时间71注册网格引擎71EETL6ETLScheduler53ETLServer应用程序INI文件设置201FFinish组件193Flash演示DBDataSinkSynchronize178DBLookup139分步调试组件逐记录6服务器INI文件设置201复制参数集68警报80模板42项目26作业36G格式设置函数uFormatDate242更改口令15工具ContentExplorer51LogFileInspector51QueryDesigner47RuntimeManager53功能SybaseETL1故障排除22关闭存储库连接12客户端用户会话12管理参数集67迁移模板41项目和作业11,14用户帐户11,14作业35H函数58JJavaScript过程编辑器和调试程序62编辑和调试JavaScript63切换模式63索引308SybaseETL集合函数uAVg210uMax210uMin210INI文件设置201IQLoaderLoadviaLoadTable配置179,184IQ锁表145,158,162,167,172,183,185,188IQ锁表等待时间145,158,163,167,172,183,186,189渐变维度287监控监视列表中的值64网格引擎73远程项目和作业204脚本函数uEvaluate266进程调用ProcessQ200警报78编辑80创建79复制80删除80K客户端装载支持150,180控制作业执行37LLoader组件IQLoaderLoadviaInsertLocation184IQLoaderLoadviaLoadTable179logfileinspector51连接修改排序顺序49,50连接至SQLite数据库285MMultiplex执行151multiplex.
ini文件151,180,187Multi-Project192配置192演示193模板创建模板41从模板创建数据模型42从模板创建项目和作业38从模板生成作业42复制模板42构建迁移模板38删除模板42修改模板42重命名模板42模板助手38模糊搜索函数uGlob243uLike244uMatches245模拟部分执行或初始化33从多个位置预览数据33控制多个数据流34模拟到某一组件33模式4启动46逐步执行当前组件和选定组件32"Read/WriteBlockSize"的影响33模拟IndexLoad93模拟和执行项目使用缺省网格引擎34模拟项目查看当前映射29交互方式28模式4逐步28目标组件148DBBulkLoadSybaseIQ149DBDataSinkDelete160DBDataSinkInsert164DBDataSinkUpdate169TextDataSink173索引用户指南309NNavigator浏览存储库13P配置CDCProviderSybaseReplicationServer114ETLServer的ReplicationCDC名称108SQLExecutor135运行时事件的警报78配置IQ多写入器151,180,187DBBulkLoadSybaseIQ151IQLoaderDBviaInsertLocation187IQLoaderFileviaLoadTable180Q启动模拟46SybaseETLDevelopment9SybaseETLServer196启动组件190配置190QueryDesigner47查看属性详细信息和生成的查询50创建查询49创建简单查询49打开48界面48使用多个表创建查询49向SELECT属性添加函数51向SELECT子句添加属性50修改连接的排序顺序49,50修改连接的缺省设置49选择所选表中的所有属性并将其添加到SELECT子句中50启用Multiplex执行151Multiplex执行,Multiplex执行180,187启用客户端装载支持150,180DBBulkLoadSybaseIQ150IQLoaderFileviaLoadTable180前提条件CDCProviderSybaseReplicationServer105迁移模板使用模板助手38取消作业执行74RRuntimeManager53编辑日程表54创建新日程表53删除日程表55执行日程表55终止日程表56日期和时间函数时间字符串的格式222使用日期和时间函数222uDate227uDateTime227uDay228uDayOfYear228uHour228uIsoWeek229uJuliandate230uMinute230uMonth231uMonthName231uMonthNameShort232uQuarter229uSeconds232uTimeDiffMs233uWeek233uWeekday234uWeekdayName234uWeekdayNameShort235uYear235日志文件捕获跟踪级别详细信息52捕获所有作业执行错误信息52检查日志文件51索引310SybaseETLSSBN6sbn表达式82SCD案例研究应用场景288类型287设置ETL项目291SQL包括变量57概述6使用表达式和过程57SQLExecutor134配置135属性134,135SQLite284持久接口284创建表285连接285提取数据285SQLitePersistent接口284Staging组件142DBStaging142StructureViewer31SybaseETL概念3概述xi功能1简介1开发工具7体系结构1组件1SybaseETLDevelopment接口10启动9SybaseETLDevelopment界面10componentstore19navigator11属性窗口16"Design"窗口18SybaseETL概念表达式6存储库3对Unicode的支持7SQL6数据类型和数据格式7项目4组件6作业4SybaseETL简介1SybaseETLServer命令行参数197启动196停止197SybaseETL组件ETLServer195Synchronizer191配置191演示192system.
log52三角函数uAcos276uAsin276uCos276uSin277uTan277删除参数集68存储库13端口结构的属性31警报80模板42项目26用户15组件18作业36设置DemoRepository中的新用户帐户10SCD的ETL项目291生成从模板生成作业42使用模板来创建项目和作业38首选项自定义19数据格式转换7索引用户指南311数据接收器设置属性45添加到项目44数据提供程序添加到项目43,44数据转换项目创建5属性CDCProviderSybaseReplicationServer116DataProviderIndexLoad91DBDataProviderFullLoad89SQLExecutor134,135TextDataProvider96,180,187XMLviaSQLDataProvider103数值函数uAbs261uCeil261uDiv262uExp262uFloor262uLn263uLog263uMod263uPow,uPower264uRandom264uRound264uSgn265uSqrt265TTextDataProvider94属性96,180,187添加到项目94添加和配置94演示97组件窗口179TextDataSink173导出和导入文件定义174固定长度文件175添加到项目173修改端口结构175体系结构SybaseETL1添加存储库12属性至端口结构31组件18停止SybaseETLServer197W网格引擎使用多个引擎71注册网格引擎71网络函数uHostname258uSMTP259位函数uBitAnd211uBitOr211为项目解锁26文件函数uFileInfo239uFileRead240uFileWrite241XXMLPortManager99编写查询99编写针对表式视图的查询100检索XML数据100添加和删除端口100XMLviaSQLDataProvider98编写查询99表式视图查询100检索XML数据100属性103添加到项目98XMLPortManager99演示104样本项目100项目安排项目34查看模拟流31索引312SybaseETL创建第一个项目43创建数据转换项目5创建数据转换项目,复杂5创建项目25复制项目26管理11管理项目25控制多个数据流34模拟27模拟和执行4模拟项目4删除项目26添加DataCalculator45添加数据接收器44添加数据提供程序43,44为项目解锁26修改项目26映射29运行项目和作业4重命名项目27重置执行属性27传输项目26自定义项目5组件演示191项目和作业管理14使用参数集执行68性能报告74性能数据分析74收集74输出76修改参数集68模板42数据类型31项目26Y演示CharacterMapper123错误194DataCalculatorJavaScript130DataSplitterJavaScript134DBDataSinkDelete164DBDataSinkInsert168DBDataSinkSynchronize178DBDataSinkUpdate173DBLookupDynamic142DBStaging147Multi-Project193Project191Synchronizer192TextDataProvider97XMLviaSQLDataProvider104已映射的属性查看30引擎监视器73引擎注册删除72修改72映射手动30自动30映射符号CharacterMapper122应用手动映射30自动映射30用户帐户创建用户14更改口令15管理11,14删除用户15源组件88DBDataProviderIndextLoad91TextDataProvider94XMLviaSQLDataProvider98运行项目和作业4索引用户指南313Z杂项函数uCommandLine248uGetEnv248uGuid249uMD5249uScriptLoad249uSetEnv250uSetLocale250uSleep254uSystemFolder254执行监视器73日志52属性重置27项目5,34作业37执行项目34中括号表示法6,59示例59重命名模板42项目27作业37注册网格引擎多个引擎71手动71转换函数uBase64Decode217uBase64Encode217uConvertDate218uFromHex219uHexDecode220uHexEncode220uToHex220uToUnicode221uURIDecode221uURIEncode221转换数据类型7转换组件120CharacterMapper121DataCalculatorJavaScript125传输项目26作业36自定义IQLoader数据格式160首选项19字符串函数uAsc,uUniCode267uCap268uChr,uUniChr268uConcat,uCon268uJoin269uLeft269uLength,uLen270uLower,uLow271uLPos270uLStuff271uLTrim271uRepeat272uReplace272,273uRight273uRPos273uRStuff274uRTrim274uSubstr,uMid270uTrim275uUpper,uUpp275组件变量和端口6标识强制属性16端口结构和映射6对SBN表达式进行求值82加密属性17,82启用或禁用评估16删除18设置组件82提供说明83添加组件18添加组件变量83项目190允许动态表达式16逐记录分步调试6作业35索引314SybaseETL最佳实践ETLServer299ETL组件300国际化303作业安排作业37创建作业35复制作业36管理35管理作业和预定任务53控制作业执行37RuntimeManager53删除作业36执行作业37重命名作业37传输作业36组件列表35作业组件35,189错误194Error组件194Finish组件193Multi-Project192Project190Start190Synchronizer191

亚洲云-浙江高防BGP,至强铂金8270,提供自助防火墙管理,超大内存满足你各种需求

官方网站:点击访问亚洲云官网618活动方案:618特价活动(6.18-6.30)全站首月活动月底结束!地区:浙江高防BGPCPU:至强铂金8270主频7 默频3.61 睿频4.0核心:8核(最高支持64核)内存:8G(最高支持128G)DDR4 3200硬盘:40G系统盘+80G数据盘带宽:上行:20Mbps/下行:1000Mbps防御:100G(可加至300G)防火墙:提供自助 天机盾+金盾 管...

hypervmart:英国/荷兰vps,2核/3GB内存/25GB NVMe空间/不限流量/1Gbps端口/Hyper-V,$10.97/季

hypervmart怎么样?hypervmart是一家国外主机商,成立于2011年,提供虚拟主机、VPS等,vps基于Hyper-V 2012 R2,宣称不超售,支持linux和windows,有荷兰和英国2个数据中心,特色是1Gbps带宽、不限流量。现在配置提高,价格不变,性价比提高了很多。(数据中心不太清楚,按以前的记录,应该是欧洲),支持Paypal付款。点击进入:hypervmart官方网...

香港服务器多少钱一个月?香港云服务器最便宜价格

香港服务器多少钱一个月?香港服务器租用配置价格一个月多少,现在很多中小型企业在建站时都会租用香港服务器,租用香港服务器可以使网站访问更流畅、稳定性更好,安全性会更高等等。香港服务器的租用和其他地区的服务器租用配置元素都是一样的,那么为什么香港服务器那么受欢迎呢,香港云服务器最便宜价格多少钱一个月呢?阿里云轻量应用服务器最便宜的是1核1G峰值带宽30Mbps,24元/月,288元/年。不过我们一般选...

什么是通配符为你推荐
0.001css现有新的ios更新可用请从ios14be苹果手机更新不了最新14系统是怎么回事?wordpresswordpress 到底是个什么东西?我要简单明了易懂的介绍。。iproute两个独立局域网 互相访问。怎么做。linux防火墙设置LINUX系统怎么关闭防火墙filezillaserver谁用过FileZilla_Server啊,请教特朗普吐槽iPhone为什么那么多人吐槽iphoneasp.net网页制作如何用ASP.NET做网站?河南省全民健康信息平台建设指引(试行)本公司www
韩国服务器租用 VPS之家 site5 hawkhost优惠码 鲨鱼机 paypal认证 抢票工具 双拼域名 域名接入 佛山高防服务器 爱奇艺vip免费试用7天 网页加速 服务器是什么意思 dmz主机 主机托管 suspended翻译 免费空间申请 好看的空间图片 网络时间服务器 web服务器下载 更多