收藏 分享(赏)

[转载]Informatica学习笔记.doc

上传人:tangtianxu2 文档编号:2903368 上传时间:2018-09-29 格式:DOC 页数:14 大小:75.50KB
下载 相关 举报
[转载]Informatica学习笔记.doc_第1页
第1页 / 共14页
[转载]Informatica学习笔记.doc_第2页
第2页 / 共14页
[转载]Informatica学习笔记.doc_第3页
第3页 / 共14页
[转载]Informatica学习笔记.doc_第4页
第4页 / 共14页
[转载]Informatica学习笔记.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、摘要:Informatica 学习笔记 1:UPDATE AS INSERTInformatica 学习笔记 2:客户端连接服务器的问题Informatica 学习笔记 3:workflow 的问题Informatica 学习笔记 4:Folder 权限的问题Informatica 学习笔记 6:建立 workflow 的问题Informatica 学习笔记 7:workflow 执行报错Informatica 学习笔记 8:提示 joiner 输入字段没有排序Informatica 学习笔记 9:import 一系列 mappingInformatica 学习笔记 10:复制数据库的问题In

2、formatica 学习笔记 11:informatica services 不能启动Informatica 学习笔记 12:从 mysql 抽取数据的字符集问题Informatica 学习笔记 13:没有 Lincense 导致的问题Informatica 学习笔记 14:lookup 中自定义 sql 有问题Informatica 学习笔记 15:infopower 如何实现增量抽取?Informatica 学习笔记 16:informatica 8.1 安装问题Informatica 学习笔记 17:如何在 PowerCenter 中实现累加 SUMInformatica 学习笔记 18

3、:PC8.1 运行出错Informatica 学习笔记 19:多行记录合并问题Informatica 学习笔记 1:UPDATE AS INSERT问:要求实现每天抽取数据,而且是如果有改变才抽取更新,没有就不更新,因为源表中有最后修改时间的字段,我让它 和 SESSION 上次运行时间比较来解决是否抽取,但问题是有的表中没有主键,我该怎么实现更新呢 ?有主键的我在 WORKFLOW 的 MAPPING 里面勾上了 UPDATE ELSE INSERT 那没主键的用 UPDATE AS INSERT 行么?还有 UPDATE AS INSERT 什么意思啊,能解释的形象点么?答:UPDATE

4、AS INSERT 就是语句一:update tab_name set c1= value1 ,c2 = value2 where c_prikey = value_pri语句二: insert into tab_name values(*)当在 tab_name 的 c_prikey 找到有等于 value_pri 的,就执行语句一把所有对应的记录 update。当没有匹配的,就执行语句二。你可以 powercenter 的 source defination 中的自己定义主键,也可以直接override update sql,可以不用理会真实表结构中是否有主键Informatica 学习笔

5、记 2:客户端连接服务器问:我通过客户端连接到服务器,做了一个 workflow,运行的时候出现错误,说是服务器连接不上repository server 和 infomatic server 他俩的 port 是不是要一样还是不需要?答:看看 server 的配置我想可能是没有配置好.问:Repository server 服务起来了,就是 informatica server 起不来了,在配置的时候,是 informatica server 的 ip 解析不出来,怎么才能把那个地址和主机对应起来答:1.直接写 IP2.编辑客户端的%WINDOWS%/SYSTEM32/DRIVERS/ETC

6、/HOSTS 文件,把 ip 与名字的对应关系加进去,客户端这台机器就可以自己解析了3.找 DNS 或者什么解析服务器搞定。问:informatica server 装在 unix 操作系统下,能不能找到配置informatica server 的配置文件对应的是那一个文件.答:unix 下缺省是 pmserver.cfg,可以用 pmconfig 这个命令行工具修改配置文件,也可以直接打开编辑。如果不是缺省的配置文件名可以通过, ps -efl|grep pmserver 看看是哪个文件名。问:谢谢,pmserver.cfg 这个文件中的配置信息我看过了,里面设置的都是repository

7、server ip:192.168.0.1 和 port:6001,怎么找不到配置的informatica server 的 ip:192.168.0.1 和 port:4001 我是想知道这个信息在配置文件中能找到吗?答:这个是在 workflow manager 里面注册的。双击 server 名字就看得到了。问:是的,我在 workflow manager 里看到过,只要在那里注册好了就行了吗,我想它应该存放在什么位置所以想搞清楚,还是谢谢你.答:他存放在策略库的 opb_server_info 表里面,呵呵。你也可以试试看直接改数据库。不过直接改数据库这种事情要悄悄的干,被 david

8、 知道了要打 pp 的。Informatica 学习笔记 3:workflow 问题问:创建一个工作流从一个 txt 文件到目标表,是不是要定义.par 参数文件 有没有谁有这方面的资料教程,给我发一份,非常感谢!我创建了一个,运行的时候出错了:(Server10) Start workflow: Request acknowledged(Server10) Start workflow: ERROR: Error in starting execution of workflow id = 8 wf_s_m_test. Please check the server log for more

9、 information.答:没必要非得定义参数文件,直接在 session 中,指定路径和文件名就行如果是同结构批量的文件,可以用 file list 功能参数文件也能作,相对来说是在外部控制路径和文件名,比较动态了.那个错,不是让你去看 server log 吗 去看看了.window 平台,default 去看事件管理器Informatica 学习笔记 4:Folder 权限的问题问:Informatica 用不同的用户创建的不同的 folder,互相看不见是什么原因那?答:保护机制的作用,建 folder 的时候,在安全选项里可以设置!把 read 权限赋给 repository us

10、er 就可以了也有可能是启用了 version control 的原因Informatica 学习笔记 5:建立 Repositories 的时候出错问:我的 Infromatica 是安装在英文版的 Windows 环境下的,Matadata 要放在Oracle9i 中,可是当我在建立 Repository 的时候怎么也连接不上我的Oracle9i 数据库,而我用其他方式连接数据库是畅通的,在 Windows 的事件查看中看到如下信息:(368|752) Failure in running command-line request type100401 pmrepagent create

11、-r “TCS“ -t “Oracle“ -u informatica -c Oradb -d “MS1252“ -h tcs-china.db -o 9999 -H “tcs-china.db“ -O 5001 -K 2082340862. Error is An error occurred while creating the repository.答:建 repository 在“Repository Server Administration Console“里面可以找到Active Log 的,可以看看出错信息,出错多的好像都是插入一个 LONG 的值,通常建策略库出问题都是字符集

12、捣的鬼,几个地方要注意数据库的字符集,系统 NLS_LANG 环境变量,操作系统的缺省字符集(windows 在地区设置里面看,还有缺省输入法也可能影响),理论上不同的字符集只要是可转换的,都是可以的,不过弄成一样的比较简单了。问:谢谢 guruhao 的提示和帮助,我决定将 Oracle 和 Informatica 重新安装一下再来测试一次,我的操作系统的缺省字符集(windows 在地区设置里面)是 china系统 NLS_LANG 环境变量是 N/A答:这一段都是正常的,drop table 不成功,属于建库之前清理表的动作,还要往后,大约在中间的位置。有个真正的插入数据的错,你最好设置

13、一下 NLS_LANG 使之与 oracle server 的字符集相匹配。it should be Oracle characterset is not same in Oracle Server and client.Informatica 学习笔记 6:建立 workflow 的问题问:我用 powercenter8 建立一个 mapping 后,在 workflow manager 中建立了workflow,但是运行这个 workflow 时却提示以下错误信息:Could not start execution of this workflow because the current

14、run onthis Integration Service has not completed yet我检查了一下:server 中的各服务已经正常启动了,但是就是运行时出现这种情况,请问是什么原因导致的?以及怎样解决呢?各位知道的就请说一下吧。答:该错误应该是说你建的这个 workflow 正在运行,且还没有结束,因而你不可以再次启动该工作流。你可以通过 Monitor 观察一下。问:该错误应该是说你建的这个 workflow 正在运行,且还没有结束,因而你不可以再次启动该工作流。你可以通过 Monitor 观察一下。但是我在 monitor 中又看不到任何的 session 在运行啊答:

15、将你的 informatica server 在 service 里重新启动后再运行看看(问:过一阵子之后再运行就正常了。不知道为什么?怪怪的)Informatica 学习笔记 7:workflow 执行报错问:我在执行某个 workflow 的时候报了如下错误:FATAL ERROR : Unexpected Condition in file /u05/bld65_64/pm713n/server/dmapper/widget/wjoiner.cpp line 3176. Contact Informatica Technical Support for assistance. Abort

16、ing this DTM process due to an unexpected condition.请问各位这是什么原因?我看了一下日志文件,好像是初始化的过程都还没有结束就报错了。答:This error occurs when the Joiner transformation in the mapping has become corrupted. To resolve this do one of the following: 1. Delete and re-create the Joiner transformation. 2. Export and import the ma

17、pping replacing the mapping when importingit.谢谢!找到原因了,原来是某一个字段的连接线没有连上导致的错误。可是我有个疑问,为什么有的控件出现这种情况的时候就没有问题呢?Informatica 学习笔记 8:提示 joiner 输入字段没有排序问:我们这里是异地开发,从北京拿过来的 mapping,在那里都可以跑通,而且没有任何问题,但是怎么拿到我这里就提示 joiner 输入字段没有排序呢?问题可能发生在什么地方呢?答:你的 join 控件应该是来自同一个数据源的,你在 join 控件前增加一个Sorter 控件,将 join 的输入数据源排序。I

18、nformatica 学习笔记 9:import 一系列 mapping问:求教,要 import 一系列 mapping,但是 codepage 不一致,应该怎么调整?答:codepage 不一致,一定得改反正一个 XML,只需要改两个地方如果 XML 很多,写一个小程序,会方便点如果少,手工改一下就好了.一系列的 xml? 是指很多,是吗? 1.建议你在导出时,用 rep manager, 将很多对象打一个包导出.2.pmrep 命令行,有个 object import 功能,写一个批量的 .bat 导了Informatica 学习笔记 10:复制数据库的问题问:请教各位大侠:我要用 Po

19、werCenter 复制一个数据库,源库是一个 SQL Server的数据库,目标库是 DB2 数据库,请问怎么做?答:一个表一个表的做。如果想一次复制所有表,干脆用 SQL server 的 DTS 好了。如果是整个库的话,不如用 DB import/export 了ETL 强调的是 TInformatica 学习笔记 11:informatica services 不能启动问:环境:在一台机器上安装了 informatica servicesclientoracle 10g(作为repository)。informatica 的版本是 8.1.1,启动 informatica servic

20、es 时没有错误,但是过几分钟就停了。日志信息 catalina.out 如下:2006-11-28 16:12:46 org.apache.coyote.http11.Http11Protocol init信息: Initializing Coyote HTTP/1.1 on http-60012006-11-28 16:12:46 org.apache.catalina.startup.Catalina load信息: Initialization processed in 1234 ms2006-11-28 16:12:46 org.apache.catalina.core.Standa

21、rdService start信息: Starting service Catalina2006-11-28 16:12:46 org.apache.catalina.core.StandardEngine start信息: Starting Servlet Engine: Apache Tomcat/5.02006-11-28 16:12:46 org.apache.catalina.core.StandardHost start信息: XML validation disabled2006-11-28 16:12:47 org.apache.catalina.core.StandardHo

22、st getDeployer信息: Create Host deployer for direct deployment ( non-jmx ) 2006-11-28 16:12:47 org.apache.catalina.core.StandardHostDeployer install信息:Processing Context configuration file URL file:c:InformaticaPowerCenter8.1.1servertomcatconfCatalinalocalhostadminconsole.xmljava.lang.UnsatisfiedLinkE

23、rror: D:InformaticaPowerCenter8.1.1serverbinpmjrepn.dll: ?前几天一直运行正常,请问各位高手,该问题如何解决,谢谢!答:This error will occur when there is there is an incompatible xerces-c_2_4_0.dll file on the Windows machine.To resolve this do the following:Stop the Informatica Services Windows service. Go to the C:WINNTsystem3

24、2 directory. Rename the xerces-c_2_4_0.dll file to xerces-c_2_4_0.old.dll. Copy the xerces-c_2_4_0.dll file in theserverbin directory to the C:WINNTsystem32 directory.is the Informatica installation directory. Re-start the Informatica Services Windows service.Try it again, please let me know the res

25、ult.Informatica 学习笔记 12:从 mysql 抽取数据的字符集问题问:我们的 source 数据库是 mysql,字符集是 utf8. 现在要用 informatica 从中抽取数据并生成文本,用于下一步的 ETL 处理。informatica server 的code page 是 ISO 8859-1. 结果中文字符总是抽取不成功。请问如何处理才能正确抽取中文字符?答:informatica server 的 code page 是 ISO 8859-1 ,你得改成 UNICODE 的模式,才可以比较适合作转换你在 workflow manager 中的那个 ODBC 的

26、连接,应该也有 codepage 的设置吧改改试试问:informatica server 的 code page 是 ISO 8859-1 ,你得改成 UNICODE 的模式,才可以比较适合作转换你在 workflow manager 中的那个 ODBC 的连接,应该也有 codepage 的设置吧改改试试谢谢斑竹。问题是我没办法去改 informatica server 的配置。如果就用当前配置,有可能做到正确抽取中文么?能够做一些编码的转换来实现么?答:乱码,就找几个点的码制设定了源就那样了, ETL 服务器上配的 ODBC,可能会有 codepage 相关; 再就是 ETL 服务器,

27、你已设为 ISO 8859-1,如果不对中文数据作转换,应该不会乱;workflow manager 中,配置 ODBC 我忘了是不是也有 code page 设定了就这么几块你分开检查一下了.你用个什么工具,通过系统 ODBC 去访问一下,如果看到的不是乱码,再从后面几点排这个错了(修改了连接 mysql 的 odbc,加上 stmt=SET NAMES utf8 就好了,谢谢斑竹!)Informatica 学习笔记 13:没有 Lincense 导致的问题问:各位兄弟们帮忙看一下,informatica 的问题,我使用的是 6 版本,目标数据库是 oracle 10g,在安装好,配置好的时

28、候,执行 workflow 的时候报这样的错误CMN_1022 Database driver error.CMN_1022 MicrosoftODBC Driver Manager Data source name not found and no default driver specifiedDatabase driver error.Function Name : ConnectDatabase driver error.Function Name : ConnectDatabase Error: Failed to connect to database using user tes

29、t_loc and connection string 192.168.1.42.答:你用的是 ODBC是 UNIX 下,还是 window?为什么不用 Oracle native driver?这个看起来,像是你在系统建的 ODBC,没有找到你在系统的 ODBC,建立一个连接,例如: odbc_ora_hr,测试一下,看是不是能连接到远程的 oracle server.你在 workflow manager 中,建立 ODBC 时,那个 connectstring 写上这个名字.odbc_ora_hr如果在系统的 ODBC 是通的,应该就可以了吧.问:ODBC 用的是 informatica

30、 自带的 odbc 安装的,用的是 window 的,我也想用oracle 的驱动,但是我没有 oracle 的 Lincense key,我只有 odbc 的所以只能用 odbc 的了,系统 odbc 配置的图和 workflow manager 中配置 odbc 的图和你说的一样,配置好后,报的错误还是一样的,急死了答:问题解决了,是 key 有问题!艾!没有 informatica 的 LincenseInformatica 学习笔记 14:lookup 中自定义 sql 有问题powercenter 7.1 windows 平台source table w_test_fstarget

31、table w_test_f源表和目标表中都有字段 col1 和 col2,这两个字段可以看作是联合主键吧 建了个 unique indexmapping 流程大概说一下 1.从源表取数据 select fs.col1,fs.col2,fs.xxx,. from w_test_fs fs2.建 lookup(从 w_test_f),in 的字段就是上面 select 出来的 col1 和 col2,比较字段是 w_test_f 中的 col1 和 col2,取出 w_test_f 中的主键select f.row_id,f.col1,f.col2 from w_test_f f, w_test

32、_fs fs where f.col1=fs.col1 and f.col2=fs.col23.建 filter, 把 lookup 找出的 lookup_row_id 和步骤 1 选出的字段传给此filterfilter 条件是 isnull(lookup_row_id)4.进入目标表现在的问题是:源表和目标表数据条数是一样多了(之前跑过,那时目标表是空的) 就是说对于col1 和 col2 来说,两个表是一样的用 sql 可以验证 select fs.* from w_test_fs fs where (select f.row_id from w_test_f f where f.col

33、1=fs.col1 and f.col2 = fs.col2) is null; 执行这条 sql 查出 0 条记录但我运行上面的 mapping 还是有数据流过 filter遇到过有部分数据流过(filter 起了部分作用)、也遇到过数据全部流过(filter 没起作用) 当然对应的 mapping 是不一样的我上面的 mapping 只是个例子 规则是一样的请问大家遇到过或者有什么建议没有?答:已找到部分原因lookup 中自定义 sql 有问题Informatica 学习笔记 15:infopower 如何实现增量抽取?问:在 informatica powercenter 中如何实现增

34、量抽取?我想了一下使用时间戳,但是这个时间戳如何去使用不是很明白,希望各位高人在这边能指点一下,如果有例子更好,在这里先谢谢了!答:有时间戳就直接用呗,总有个办法记录上次抽取的时间的,也有办法设置本次的截止日期然后 where timestamp last_time and timestamp TO_DATE ($LastUpdateDateTime) AND SALES.sales_datetime Store Values Across Rows。想了想,在 aggregator 里面用 cume 遇到不同的 group by 条件后,应该是可以自动清 0 的,所以还是用 cume 简单些

35、。我觉得 cume 能实现, 实在不行,一次只处理一年的(这样考虑的东西少,最简单),用参数控制一下 where 子句实在不行,可以考虑,将地区,年,月,合成一个字段这个咋都能作能作的方法有多种但我觉得这种最简单.问:我现在目前就是只处理一年的,上午我试了下,用 cume 是可以的做的,但是以后肯定是不止一年的数据。还有 David 说:”把地区,年,月合成一个字段,这咋都能作“,我有点不理解,能具体一点点吗?答:字符串与呀我觉得还是一年一年处理比较好你可以作一个 session,用参数来控制 where 子句,每次作一年的.你用外部一个程序控制改变这个参数,并多次执行(pmcmd )这样比较

36、简单我知道把地区,年,月合成一个字段是字符串与,我的意思是说:把地区,年,月合成一个字段后,在我做累积 SUM 的时候怎么来用,为什么这样就可以”咋都能作“了?不好意思,刚刚没讲清楚。:)再用 cume 呀.Informatica 学习笔记 18:PC8.1 运行出错问::confused: 版本 PC8.1用了一个最简单的例子,就源和目标的一个一一映射。应该说不会是流程的问题和参数设置问题。运行后错误日志如下:Message: * FATAL ERROR : Unexpected Condition in file ZeusbuilderProductionviewpowrmartcommo

37、nodloracle8oradriver.cpp line 241. Contact Informatica Technical Support for assistance. Aborting this DTM process due to an unexpected condition. * 怀疑是不是 PC8.1 文件被破坏了,请各位高手指点一下可能会是什么问题?答:你的这个问题,不是找到原因了吗减小 sorter 的 cache 或增大 swap space看着像是 ODBC 方面的问题。两个建议:1.重启机器,试一下。有时安装完,没有重启,有些变量没有生效,会报这类问题。2. 请用

38、DataDirect ODBC,重新导入源和目标结构,再作一个简单的例子,试一下。问:建议:1,我的 PC8 已经安装很久了(不过 lisence 还没过期,改过系统时间啦),所以呢机器已经重起很多次啦,应该不是这个问题2,源和目标也重新导过,一样报错,另外我不管哪个 task 都是报这一样的错,所以应该不是某个组件的参数设置不合理(最后一次做的一个 mapping 根本就没有用到转换组件)还有一点,我现在用的是 PC8.1.0 版本,但之前在这个知识库里还原进来的是PC8.1.1 的.rep 文件,所以我怀疑是不是版本不兼容,但是今天我又把PC8.1.1 的知识库删了(只是把知识库及其内容删

39、了,没将存放知识库的oracle 用户删了重建),然后又创建了个 PC8.1.0 的新知识库,在这个平台下又做了 mapping,运行后还是报一样的错。你说的 ODBC 的问题我也想过,但不知道怎么来检查,因为错误信息里的那个路径我还没找到。希望指点一下答:你是按我说的用 datadirect ODBC 建立一个 ODBC,再用 designer 导入源,目标,作一个简单的 mapping。在 workflow manager 中,你可建立基于oracle native driver 的连接。这个问题,就是 ODBC 的 driver 不对。要用 DataDirect 的那个问题解决了。原因是

40、我导表结构时,使用的 oracle 提供的 ODBC 去导的。driver 是Oracle in OraHome92这次我换了 PC8 提供的 ODBC 去导就好了,driver 是DataDirect CLOSED ODBC 5.1 oracle wire protocol问题是解决了,不过还是感到疑惑,这 2 个 ODBC 有什么不同吗,疑问 1,我用本地 ODBC 能导表结构说明本地 ODBC 应该没问题,是不是 PC8 不支持这种使用方法2,我试过用本地 ODBC 导表结构,然后运行 workflow 时仍然用本地 ODBC 去取数,但仍然报错3,我试过用 oracle10g 提供的

41、ODBC 导表结构,这样做出来的 mapping 能正常运行我大概记着点,好像是 Oracle 客户端版本比较低,会有这个问题,所以 1 时,导入结构会有问题.Informatica 学习笔记 19:多行记录合并问题问:请教各位高手,如下记录:a b c-1 a b1 c d1 e f2 a b2 c d2 e f如何做到a-1 a b c d e f2 a b c d e f答:用变量作,比较好作。用变量记住上一次记录的 a 字段,if(pre_a=curr_a, then col_sum2|curr_b|curr_c as col_sum, else pre_b|pre_c as col_sum2), 可能最后加一个长度判断,把长度不为最后要求长度的过滤掉这样作,好像不太灵活如果使用 Sagent Data Flow 的话至少有 2 种方法可以实现:(1)利用 pivot 按行同时按列汇总的方式;(2)表达式计算器中写一个表达式即可:if ( (GetValue(“a“,0)=PutValue(“a“,第 1 列) )then(PutValue(“b“,GetValue( “b“,第 2 列+第 3 列 )+第 2 列+第 3 列)else(PutValue(“b“,第 2 列+第 3 列)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报