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/ET
6、C/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 表里面,呵呵。你也可以试试看直接改数据库。不过直接改数据库这种事情要悄悄的干,被 davi
8、d 知道了要打 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 mor
9、e information.答:没必要非得定义参数文件,直接在 session 中,指定路径和文件名就行.如果是同结构批量的文件,可以用 file list 功能.参数文件也能作,相对来说是在外部控制路径和文件名,比较动态了.那个错,不是让你去看 server log 吗. 去看看了.window 平台,default 去看事件管理器Informatica 学习笔记 4:Folder 权限的问题问:Informatica 用不同的用户创建的不同的 folder,互相看不见是什么原因那?答:保护机制的作用,建 folder 的时候,在安全选项里可以设置!把 read 权限赋给 repositor
10、y user 就可以了也有可能是启用了 version control 的原因Informatica 学习笔记 5:建立 Repositories 的时候出错问:我的 Infromatica 是安装在英文版的 Windows 环境下的,Matadata 要放在Oracle9i 中,可是当我在建立 Repository 的时候怎么也连接不上我的Oracle9i 数据库,而我用其他方式连接数据库是畅通的,在 Windows 的事件查看中看到如下信息:(368|752) Failure in running command-line request type100401 pmrepagent cre
11、ate -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 curr
14、ent 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. A
16、borting 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 th
17、e mapping replacing the mapping when importingit.谢谢!找到原因了,原来是某一个字段的连接线没有连上导致的错误。可是我有个疑问,为什么有的控件出现这种情况的时候就没有问题呢?Informatica 学习笔记 8:提示 joiner 输入字段没有排序问:我们这里是异地开发,从北京拿过来的 mapping,在那里都可以跑通,而且没有任何问题,但是怎么拿到我这里就提示 joiner 输入字段没有排序呢?问题可能发生在什么地方呢?答:你的 join 控件应该是来自同一个数据源的,你在 join 控件前增加一个Sorter 控件,将 join 的输入数据源
18、排序。Informatica 学习笔记 9:import 一系列 mapping问:求教,要 import 一系列 mapping,但是 codepage 不一致,应该怎么调整?答:codepage 不一致,一定得改.反正一个 XML,只需要改两个地方.如果 XML 很多,写一个小程序,会方便点.如果少,手工改一下就好了.一系列的 xml? 是指很多,是吗? 1.建议你在导出时,用 rep manager, 将很多对象打一个包导出.2.pmrep 命令行,有个 object import 功能,写一个批量的 .bat 导了Informatica 学习笔记 10:复制数据库的问题问:请教各位大侠
19、:我要用 PowerCenter 复制一个数据库,源库是一个 SQL Server的数据库,目标库是 DB2 数据库,请问怎么做?答:一个表一个表的做。如果想一次复制所有表,干脆用 SQL server 的 DTS 好了。如果是整个库的话,不如用 DB import/export 了.ETL 强调的是 T.Informatica 学习笔记 11:informatica services 不能启动问:环境:在一台机器上安装了 informatica servicesclientoracle 10g(作为repository)。informatica 的版本是 8.1.1,启动 informati
20、ca services 时没有错误,但是过几分钟就停了。日志信息 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.co
21、re.StandardService 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.S
22、tandardHost 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.Unsatis
23、fiedLinkError: 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:WIN
24、NTsystem32 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 kno
25、w the result.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 中
26、的那个 ODBC 的连接,应该也有 codepage 的设置吧.改改试试.问:informatica server 的 code page 是 ISO 8859-1 ,你得改成 UNICODE 的模式,才可以比较适合作转换.你在 workflow manager 中的那个 ODBC 的连接,应该也有 codepage 的设置吧.改改试试.谢谢斑竹。问题是我没办法去改 informatica server 的配置。如果就用当前配置,有可能做到正确抽取中文么?能够做一些编码的转换来实现么?答:乱码,就找几个点的码制设定了.源就那样了, ETL 服务器上配的 ODBC,可能会有 codepage 相
27、关; 再就是 ETL 服务器, 你已设为 ISO 8859-1,如果不对中文数据作转换,应该不会乱;workflow manager 中,配置 ODBC 我忘了是不是也有 code page 设定了.就这么几块.你分开检查一下了.你用个什么工具,通过系统 ODBC 去访问一下,如果看到的不是乱码,再从后面几点排这个错了.(修改了连接 mysql 的 odbc,加上 stmt=SET NAMES utf8 就好了,谢谢斑竹!)Informatica 学习笔记 13:没有 Lincense 导致的问题问:各位兄弟们帮忙看一下,informatica 的问题,我使用的是 6 版本,目标数据库是 or
28、acle 10g,在安装好,配置好的时候,执行 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 data
29、base using user test_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 是通的,应该就可以了吧.问
30、:ODBC 用的是 informatica 自带的 odbc 安装的,用的是 window 的,我也想用oracle 的驱动,但是我没有 oracle 的 Lincense key,我只有 odbc 的所以只能用 odbc 的了,系统 odbc 配置的图和 workflow manager 中配置 odbc 的图和你说的一样,配置好后,报的错误还是一样的,急死了答:问题解决了,是 key 有问题!艾!没有 informatica 的 LincenseInformatica 学习笔记 14:lookup 中自定义 sql 有问题powercenter 7.1 windows 平台source t
31、able w_test_fstarget 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 fr
32、om w_test_f f, w_test_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
33、_test_f f where f.col1=fs.col1 and f.col2 = fs.col2) is null; 执行这条 sql 查出 0 条记录但我运行上面的 mapping 还是有数据流过 filter遇到过有部分数据流过(filter 起了部分作用)、也遇到过数据全部流过(filter 没起作用) 当然对应的 mapping 是不一样的我上面的 mapping 只是个例子 规则是一样的请问大家遇到过或者有什么建议没有?答:已找到部分原因lookup 中自定义 sql 有问题Informatica 学习笔记 15:infopower 如何实现增量抽取?问:在 informati
34、ca powercenter 中如何实现增量抽取?我想了一下使用时间戳,但是这个时间戳如何去使用不是很明白,希望各位高人在这边能指点一下,如果有例子更好,在这里先谢谢了!答:有时间戳就直接用呗,总有个办法记录上次抽取的时间的,也有办法设置本次的截止日期然后 where timestamp last_time and timestamp TO_DATE ($LastUpdateDateTime) AND SALES.sales_datetime TO_DATE ($SessStartTime) 小声的问下:这个时间戳的时间一定要是来自源表中某个字段值吗?如果源表中没有这样的时间字段,怎么办?1.
35、从源中找到变化和增量标识(可能是时间字段或一些业务字段,标识位之类的),这样比较容易作.2.现在有一些工具是可以从 DB 的 log 层面解析变化数据的,这样,就可以不用这样考虑了.3.从 DB 的功能角度去想办法,找到增量或变化数据的方法,像 oracle 有物化视图.4.还有一些建数据库触发器或全表比对.5. EAI.还有一些方法吧,但多半用上面几种吧.1 保证要做的数据源中有标示更新的时间戳和标示逻辑删除的字段!2 在 mapping 设计中设置 mapping 变量,用来记录每次执行 etl 过程时的数据库时间(注意是源系统的数据库时间)3 记得更新 mapping 变量其余的就不用说
36、了呵呵,向 SuperGlue 转行中!Informatica 学习笔记 16:informatica 8.1 安装问题问:大家好,请教一个问题, 安装 8.1 时 每次安装到connecting to repository service 时,总是过不去,连接不上, 报cannot connect to repository service, 弹出一个窗口,列出了一些信息,然后有 2 个选项, 重试 和 忽略.弹出的信息如下:The installer created the Repository Service, but could not enable it. Use the Admin
37、istration Console at http:/smu-o7542xepp54:6001/adminconsole to correct the error and enable the service. You can get more information in the Repository Service logs in the Administration Console Log Viewer. Select Ignore to continue withthe installation and enable the Repository Service after insta
38、llation.STDOUT:.请教大家,为什么连接不上 RESPOSITORY SERVCIE 啊, 2 个数据库连接测试都是测试通过.答:和 db 操作一样, 可以 connect 只是前提保证,在执行大的 SQL 时,因为权限,网络,字符集不统一或大 SQL 的原因,极有可能会失败.你先描述一下,你所有 DB 是啥吧.不同数据库,反应是不同的.问:SQL SERVER 2000 开发版SP4WINXP SP2 和SQL SERVER 2005+sp1+ win2003 server+sp1 杨晓东说推荐用 ORACLE , 但之前我们在 sqlserver2000 和 2005 上都安装成功了,现在安装总是在上面的步骤通过不了,连接不上建个数据库,个用户,连 repository 库时,我干脆用 sa 登陆,都连接不上 repository services.网络方面,我是服务器,客户端都装在我的本上,都是本机字符集方面, 我拿到的 8.1 是中文版的,操作系统也是中文版的 之前用的时候是英文版,那时候装的也是英文的,都是统一的答:你先登录到 http:/smu-o7542xepp54:6001/adminconsoleuser: adminpassword 用你设定的那个, 进到 console 页面,点击 repository 图标,右面会