Informatica 初学日记全

1. INFORMATICA CLIENT的使用
1.1 Repository Manager 的使用
1.1.1 建立Repository。
前提:java

a. 在ODBC数据源管理器中新建一个数据源链接至你要建立Repository的数据库(例:jzjxdev)
b. 要在你要链接的数据库中新建一个用户(例:name: ETL password: ETL)
如今你能够建立一个Repository了。选择Repository – Create Repository,输入Repository Name(例:JZJX),Database Username(例:etl),Database Password(例:etl),ODBC Data Source(例:jzjxdev),Native Connect String(数据库所在ip例:141.20.52.108)mysql


1.1.2 添加Repository。
经过这一步你能够添加别人已经建好的Repository。
选择Repository – Add Repository,输入Repository Name(例:JZJX),Username(例:etl),点击ok就能够看到名为JZJX的Repository在左边的浏览器中,可是此时还看不到它的内容,要看到它的内容或者对它进行操做必须先链接它。sql


1.1.3 添加Folder
选择Folder – Create,输入文件夹名称便可。数据库


1.2 Designer 的使用
首先链接Repository,能够看到该Repository在Repository Manager中建立的文件夹。express


1.2.1 Sources 
    Sources文件夹下的表是抽取的来源表。
    导入方法:apache

    选择Tools菜单下的Source Analyzer,而后选择Sources菜单下的Import from database,链接想要链接的数据库,链接上后选择你要抽取的表点击ok你所选择的表就会出如今Sources文件夹下。
    说明:上面的导入过程导入的只是表结构,你也能够本身建立来源表,只要你建立的表的结构跟真实存在的那张表的表结构一致就行。小程序


1.2.2 Targets 
     Targets文件夹下的表是抽取的目标表,也就是抽取结果的存放表.
     导入方法: 选择Tools菜单下的Warehouse Designer,而后选择Targets菜单下的Import from database,链接想要链接的数据库,链接上后选择你要抽取的表点击ok你所选择的表就会出如今Targets文件夹下。
    说明:上面的导入过程导入的只是表结构,你也能够本身建立目标表,只要你建立的表的结构跟真实存在的那张表的表结构一致就行。windows


1.2.3 Mappings 的设计
        选择Tools菜单下的Mapping Designer才能进行Mapping的设计。
        每一个Mapping都由来源表,transformation和目标表组成,描述数据抽取的过程。来源表和目标表能够从Sources和Targets文件夹拖拽到工做区,可是transformation通常来讲是须要本身建立的。Mapping的设计关键是transformation的使用,它的使用关系到数据抽取的正确性和效率。下面说明各个transformation的做用和用法。
(Active:表示该transformation能够改变经过它的数据的行数;
Passive:表示该transformation不改变经过它的数据的行数;
Connected:表示该transformation要链接到数据流;
Unconnected:表示该transformation能够不链接到数据流)浏览器


1.2.3.1 Source Qualifier
做用:根据查询SQL文从关系表或平坦文件查出所要记录
用法:建立好Source Qualifier(下简称SQ) 后,将须要的用的字段历来源表拖拽到SQ ,双击SQ,对SQ的属性进行设置。
Select Distinct 属性:选中的话代表结果记录将去除重复值;
Tracing Level属性: 共有四级,表示log的复杂程度;
Number Of Sorted Ports属性: 排序的字段个数,值大于0时Sql Query中的sql 文将出现order by 从句;
Sql Filter属性: 属性值将出如今Sql Query属性值的where表达式中;
User Defined Join属性: 用户若是要定义外部链接可在此写(例: {REG_CUSTOMER LEFT OUTER JOIN PURCHASES on
(REG_CUSTOMER.CUST_ID = PURCHASES.CUST_ID AND PURCHASES.AMOUNT > 100.00) })
Sql Query属性:值是一条sql 文,session运行时会执行这条sql 文进行查询。
命名方式:SQ_Name
类型:Active/Connected
注意:SQ的输入只能来自来源表; User Defined Join属性值必须用{}括起来;在更改了SQ的属性值以后必定要点击Sql Query属性的
generate sql按钮从新生成sql文。缓存


1.2.3.2 Update Strategy
做用:决定该行进行插入,删除,更新,忽略中的哪种操做
用法:建立好Update Strategy(下简称US)后,将须要的用的字段从transformation拖拽到US ,双击US,对US的属性进行设置。US的设
置关键是Update Strategy Expression属性的设置,这个表达式使用IIF 或DECODE 函数对记录的每一行进行判断,为每一行赋予
DD_INSERT,DD_UPDATE,DD_DELETE,DD_REJECT(这四个是常量,值分别为0,1,2,3)中任意一个值,代表该行在数据库中将进行
何种操做。
命名方式:UPD_Name
类型:Active/Connected
注意:mapping中有US时,mapping对应的session的在配置属性时必须把Treat rows属性设置为Data Driven,不然US将不起做用。


1.2.3.3 Expression
做用:计算一个值
用法:建立好expression_r(下简称EXP)后,将须要的用的字段历来源表拖拽到EXP,双击EXP,
     新增输出端口,编辑该端口的表达式。
命名方式:EXP_Name
类型:Passive/Connected
注意:要进行列运算通常用这个transformation; 此种transformation可使用本地变量


1.2.3.4 Stored Procedure
做用:调用一个存储过程
用法:建立Stored Procedure(下简称SP)的时候链接数据库选择必要的存储过程。SP有链接和不链接到数据流两种用法。
链接到数据流方式跟通常的transformation相似,经过拖拽端口来实现数据流。
不链接到数据流分表达式调用和Pre-/Post Session两种方式。表达式调用方式中SP被Mapping中另外一个transformation 中的表达式
调用。Pre-/Post Session方式就是在Session的属性中配置SP的运行时间,Source Pre-load(Session从源表查询数据以前),Source
Post-load(Session从源表查询数据以后),Target Pre-load(Session将数据插入目标表以前),Target Post-load(Session将
数据插入目标表以后)
命名方式:SP_Name
类型:Passive/Connected or Unconnected
注意:


1.2.3.5 Sequence Generator
做用:产生主键
用法:建立好Sequence Generator(下简称SEQ)后,双击SEQ,对SEQ的属性进行设置。Start Value属性是开始值,此属性只在选择了
Cycle选项才有效;Increment By 属性值是每次增长的值;End Value属性值是结束值;Current Value属性值是当前开始值;Cycle选
项被选择的话NEXTVAL的值达到End Value值以后会从新从Start Value开始;Reset选项被选择的话,服务器会为每一个使用了该SEQ的
session的NEXTVAL值都从Current Value开始。
命名方式:SEQ_Name
类型:Passive/Connected
注意:这是一个只有两个输出端口没有输入端口的transformation.;
      若是该SEQ时可重复使用的话,不能选择Reset选项。


1.2.3.6 Aggregator
做用:执行分组聚合运算
用法:建立好Aggregator(下简称AGG)后,将须要的用的字段从其余transformation拖拽到AGG ,双击AGG,在端口tab中每一个端口有
group by 选项。钩上想要分组的列,新增端口,编写聚合表达式实现分组聚合运算。
命名方式:AGG_Name
类型:Active/Connected
注意:可以使用本地变量


1.2.3.7 Filter
做用:过滤记录
用法:建立好Filter(下简称FIL)后,将须要的用的字段从transformation拖拽到FIL ,双击FIL,对FIL的属性进行设置。FIL的配置主
要是对Filter Condition的配置,Filter Condition 写入相似where条件的表达式便可。
命名方式:FIL_Name
类型:Active/Connected
注意:


1.2.3.8 Lookup
做用:查询值
用法:建立Lookup(下简称KP)的时候选择要查询的表。和Stored Procedure同样SP有链接和不链接到数据流两种用法。
链接到数据流方式将要关联查询的字段从其余的transformation拖拽过来,而后双击LKP进行属性的配置。Lookup Policy On
Multiple Match属性代表当查询到多个行时采起取第一行,取第二行,报错中哪一个策略.Lookup Condition 属性值是查询的条件。
Lookup Sql Override属性值是查询执行的Sql文,咱们能够在里面直接写Sql。Lookup Caching Enabled属性代表是否使用缓存,此项
通常选择为好,有利提升效率。Loopup Cache Persistent属性代表是否使用永久的缓存。
命名方式:LKP_Name
类型:Passive/Connected or Unconnected
注意:若是Lookup表的类型是来源表的话,请尽可能使用Joiner;
一个已链接的LKP不能再被其余transformation的表达式调用;
若是查询表在session运行过程当中不会改变,使用Loopup Cache Persistent属性可提升性能;
尽可能不要在Lookup Sql Override中书写order by子句,由于cached LKP默认有order by ;


1.2.3.9 Joiner
做用:链接查询来自不一样数据库的表或平坦文件
用法:建立好Joiner(下简称JNR)后,将须要的用的字段从transformation拖拽到JNR ,双击JNR,对JNR的属性进行设置。用于链接的
两个表一个称为detail表,一个称为master表。JNR属性中可配置Join Type(链接类型)为Normal Join,Master Outer Join,Detail
Outer Join 和Full Outer Join中任意一种。Normal Join至关于常规的inner join; Master Outer Join至关于常规的Detail left
outer join Master;Detail Outer Join至关于常规的Detail right outer join Master; Full Outer Join至关于常规的full outer
join。Join Condition属性值就是常规sql文on 后带的条件。
命名方式:JNR_Name
类型:Active/Connected
注意:尽可能使用Normal Join,Master Outer Join.这两个的效率比另外两个更好


1.2.3.10 Normalizer
做用:格式化记录,这些记录能够是来自COBOL源
用法:
命名方式:NRM_Name
类型:Active/Connected
注意:


1.2.3.11 Router
做用:根据一组表达式将记录分类路由到多个transformation
用法:建立好Router(下简称RTR)后,将须要的用的字段从transformation拖拽到RTR,双击RTR,对RTR的属性进行设置。在Group tab
中添加组,为每组编辑该组的过滤条件。
命名方式:RTR_Name
类型:Active/Connected
注意:组过滤条件表达式的计算值必须是真或者假。


1.2.3.12 Rank
做用:排序记录,只输出最顶层或最低层的n个记录
用法:建立好Rank(下简称RNK)后,将须要的用的字段从transformation拖拽到RNK,双击RNK,对RNK的属性进行设置。在Ports tab中
有一个名为‘R’的列,选择你要排序的列。你还能够选择你想分组的列。在Properties tab中Top/Bottom属性,Top表示选择顶层的
记录,Bottom表示选择底层的记录; Number Of Ranks属性值是整数,表示要选择的记录条数。假设你在‘R’列中选择了名为’
Price’的列,并且Group By选择了‘Name’列,Top/Bottom属性选择的是‘Top’, Number Of Ranks属性值是2,那么将抽取过程是
这样的:以name分组取出每组中 Price最大的2列记录。
命名方式:RNK_Name
类型:Active/Connected
注意:可使用本地变量


1.2.3.13 ERP Source Qualifier
做用:根据查询SQL文从ERP文件查出所要记录
用法:
命名方式:
类型:Active/Connected
注意:


1.2.3.14 XML Source Qualifier
做用:根据查询SQL文从XML文件查出所要记录
用法:
命名方式:XSQ_Name
类型:Passive/Connected
注意:


1.2.4 Mapping Parameters(参数) 和 Variables(变量)的使用
若是你在一个mapping中屡次用到同一个值,又或者mapping中要用到一个在session运行才能决定的值,这时候可使用mapping
parameters或variable。添加参数或变量的方法是:选择Mappings-Parameters and Variables,在窗口新增变量或者参数,并对它的
数据类型,数据大小,初始值进行设置。添加的参数和变量在本mapping的transformation的表达式中就可使用了。这些参数和变
量的值还能够设置在.txt文件中,建session或者batch的时候把这个文件的路径设置在Parameter输入框中就好了。
Mapping参数变量的命名方式:$$NAME
存放参数变量的.txt文件的格式:folder_name可写可不写
[folder_name.session_name]   
parameter_name=value
variable_name=value
mapplet_name.parameter_name=value
[folder_name.session2_name]
parameter_name=value
variable_name=value
mapplet_name.variable_name=value
[folder2_name.session_name]
parameter_name=value
variable_name=value
mapplet_name.parameter_name=value


1.2.5 Mapping 的调试
选择Mappings–Debugger–Start Debugger,在点击‘下一步’的过程当中选择调试过程运行在哪台服务器而后为来源表选择数据库,
最后到完成。等调试初始化好以后点击Mappings–Debugger–Continue(或按F5),便可开始调试,选择某个目标表便可看该表的结果
数据。若是还想看中间某个transformation的数据,在开始调试前为该transformation增长一个断点。


1.3 Server Manager 的使用
1.3.1  Register Server(注册服务器)
任何session都必须运行在某个服务器上,因此若是Server Manager里没有服务器的话必须注册一个,固然你也可注册多个服务器。
服务器的注册过程以下:
选择Server Configuration – Register Server,Server输入 的是要注册的服务器的名称;Host Name 输入的是运行了informatica
server的机器名或iprotocol选择TCP/IPort Number输入4001。最下面的是服务器的变量设置,设置的是session或batch运行时一些
文件的存放位置,好比说log文件bad 文件 cache文件,通常不用更改。这样一个服务器就注册到repository了,不事后面你能够双
击它从新编辑。


1.3.2 Add DataBase Connection(添加数据库链接)
选择Server Configuration – DataBase Connection,点击Add,而后选择数据库的类型。不一样类型的数据库配置起来不必定同样,下面说明Oracle 和SQL Server两种数据库链接的配置。
Oracle类型数据库链接配置:Data Source 输入数据源名称;User Name输入数据库链接的用户名;Password输入数据库链接的密码;Connect String 输入Oracle TNS 服务名。
SQL Server 类型数据库链接配置: Data Source 输入数据源名称;User Name输入数据库链接的用户名;Password输入数据库链接的密码;Database Name输入数据库名称;Server Name输入数据库的ip地址;Domain Name输入数据库的域名。


1.3.3 Add Session(添加抽取任务)
Mapping 只是数据抽取过程的设计,要使这个过程运行必须为该Mapping创建对应的session,而后运行该session。选择Operations-Add Session,在窗口中选择一个Mapping点击ok会出现编辑该session的窗口。
Session输入框输入该session的名称;
server选择该session将运行在的服务器;
Treat rows有Insert,Delete,Update,Data Driven四个选项,代表抽取出来的数据在目标表中做何种操做,只有在session对应的mapping中有Update Stategy时才能选择Data Driven并且也必须选择Data Driven;
Source 框选择来源表所在的数据库;
Target Options 中的Insert,Update(as Update),Update(as Insert),Update(else Insert),Delete,Truncate table 选项的意思分别是:将insert做insert操做,将Update 做insert操做,将Update先作Update操做不成功再做insert操做,将delete做delete操做,在对目标表操做前删除目标表全部数据。这些选项若是与Update Stategy冲突server将以这里的设置为准,也就是说这里的设置能够覆盖Update Stategy的设置;Parameter输入框中输入session要用到的参数或变量的所在文件的路径;其余设置比较简单或者保持原来的值便可,这里就再也不详细说明了。除了在添加 session的过程当中可编辑session以外,双击已添加的session也对session从新设置。
注:若是mapping 中有Joiner的话,session的编辑窗口的Source Type就变成heterogeneous(不一样类),这样就没法经过设置Source
来设置来源表的位置,只能在Source Location tab中为每一个来源表设置位置。


1.3.4 Add Batch(添加批操做任务)
添加Batch能够将一系列的session串起来,这样就可让必须按顺序执行的session有序的执行。添加方法:选择Operations-Add Batch,在窗口中对batch进行编辑。Batch输入框中输入batch 的名称;
Parameter输入框中输入batch中的session要用到的参数或变量的所在文件的路径,因为每一个session均可以设置本身的parameter,因此batch中能够不设置,即便batch的parameter进行了设置也会被各个session本身的parameter设置所覆盖,但若是session用到了parameter在同一个文件中的话,把parameter文件的位置设置在batch的parameter输入框就显得更方便;Enabled选项代表是否让该batch有效;Concurrent选项代表是否让batch中的全部session并行地运行;Schedule中可设置batch的运行时间和运行频率。


1.3.5 Session和Batch 的运行
右键单击要运行的session或者batch,选择start便可让该session或者batch马上运行。若是你的session或者batch的Schedule设置不是选择的‘Run only on demand’,那么该session或者batch就会在设置完后就处在Scheduled状态,时间一到就会自动运行。(能够右击服务器选择monitor来监视运行在该服务器下的session或者batch当前状态)。

 


Informatica学习笔记1:UPDATE AS INSERT


问:
要求实现天天抽取数据,并且是若是有改变才抽取更新,没有就不更新,
由于源表中有最后修改时间的字段,我让它 和SESSION上次运行时间比较来解决是否抽取,
但问题是有的表中没有主键,我该怎么实现更新呢 ?
有主键的我在WORKFLOW的MAPPING里面勾上了UPDATE ELSE INSERT
那没主键的用 UPDATE AS INSERT 行么?
还有UPDATE AS INSERT 什么意思啊,能解释的形象点么?


答:
UPDATE 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学习笔记2:客户端链接服务器


问:
我经过客户端链接到服务器,作了一个workflow,运行的时候出现错误,说是服务器链接不上
repository server和infomatic server他俩的port是否是要同样仍是不须要?


答:
看看server 的配置..我想多是没有配置好.


问:
Repository server服务起来了,就是informatica server起不来了,在配置的时候,是informatica server的ip解析不出来,怎么才能把那个地址和主机对应起来


答:
1.直接写IP
2.编辑客户端的%WINDOWS%/SYSTEM32/DRIVERS/ETC/HOSTS文件,把ip与名字的对应关系加进去,客户端这台机器就能够本身解析了
3.找DNS或者什么解析服务器搞定。


问:
informatica server装在unix操做系统下,能不能找到配置informatica server的配置文件对应的是那一个文件.


答:
unix下缺省是pmserver.cfg,能够用pmconfig这个命令行工具修改配置文件,也能够直接打开编辑。
若是不是缺省的配置文件名能够经过, ps -efl|grep pmserver看看是哪一个文件名。


问:
谢谢,pmserver.cfg这个文件中的配置信息我看过了,里面设置的都是repository 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知道了要打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 information.


答:
不必非得定义参数文件,直接在session 中,指定路径和文件名就行..若是是同结构批量的文件,能够用file list 功能..
参数文件也能做,相对来讲是在外部控制路径和文件名,比较动态了.
那个错,不是让你去看 server log 吗.. 去看看了.
window 平台,default 去看事件管理器
Informatica学习笔记4:Folder权限的问题


问:
Informatica用不一样的用户建立的不一样的folder,互相看不见是什么缘由那?


答:
保护机制的做用,建folder的时候,在安全选项里能够设置!~
把read权限赋给 repository user就能够了
也有多是启用了 version control 的缘由
Informatica学习笔记5:创建Repositories的时候出错


问:
个人Infromatica是安装在英文版的Windows环境下的,Matadata要放在Oracle9i中,但是当我在创建Repository的时候怎么也链接不
上个人Oracle9i数据库,而我用其余方式链接数据库是畅通的,在Windows的事件查看中看到以下信息:
(368|752) Failure in running command-line request type[100401] [pmrepagent create -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的值,一般建策略库出问题都是字符集捣的鬼,几个地方要注意数据库的字符集,系统NLS_LANG环境变量,操做系统的缺省字符集(windows在地区设置里面看,还有缺省输入法也可能影响),理论上不一样的字符集只要是可转换的,都是能够的,不过弄成同样的比较简单了。


问:
谢谢guruhao的提示和帮助,我决定将Oracle和Informatica从新安装一下再来测试一次,个人操做系统的缺省字符集(windows在地区设置里面)是china系统NLS_LANG环境变量是N/A


答:
这一段都是正常的,drop table不成功,属于建库以前清理表的动做,还要日后,大约在中间的位置。有个真正的插入数据的错,你最好设置一下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 run on this Integration Service has not completed yet我检查了一下:server中的各服务已经正常启动了,可是就是运行时出现这种状况,请问是什么缘由致使的??以及怎样解决呢???各位知道的就请说一下吧。


答:
该错误应该是说你建的这个workflow正在运行,且尚未结束,于是你不能够再次启动该工做流。你能够经过Monitor观察一下。


问:
该错误应该是说你建的这个workflow正在运行,且尚未结束,于是你不能够再次启动该工做流。你能够经过Monitor观察一下。
可是我在monitor中又看不到任何的session在运行啊~


答:
将你的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. Aborting 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 mapping replacing the mapping when importing it.
谢谢!!找到缘由了,原来是某一个字段的链接线没有连上致使的错误。但是我有个疑问,为何有的控件出现这种状况的时候就没
有问题呢??


Informatica学习笔记8:提示joiner输入字段没有排序


问:
咱们这里是异地开发,从北京拿过来的mapping,在那里均可以跑通,并且没有任何问题,可是怎么拿到我这里就提示joiner输入字
段没有排序呢?问题可能发生在什么地方呢?


答:
你的join 控件应该是来自同一个数据源的,你在join 控件前增长一个Sorter 控件,将join 的输入数据源排序。
Informatica学习笔记9:import一系列mapping


问:
求教,要import一系列mapping,可是codepage不一致,应该怎么调整?


答:
codepage 不一致,必定得改..反正一个XML,只须要改两个地方..若是XML不少,写一个小程序,会方便点..若是少,手工改一下就行了.
一系列的xml?? 是指不少,是吗?
1.建议你在导出时,用rep manager, 将不少对象打一个包导出.
2.pmrep 命令行,有个object import 功能,写一个批量的 .bat 导了
Informatica学习笔记10:复制数据库的问题


问:
请教各位大侠:我要用PowerCenter复制一个数据库,源库是一个SQL Server的数据库,目标库是DB2数据库,请问怎么作?


答:
一个表一个表的作。
若是想一次复制全部表,干脆用SQL server的DTS好了。
若是是整个库的话,不如用DB import/export了..ETL强调的是T..


Informatica学习笔记11:informatica services不能启动


问:
环境:
在一台机器上安装了informatica services+client+oracle 10g(做为repository)。informatica的版本是8.1.1,启动
informatica services时没有错误,可是过几分钟就停了。日志信息catalina.out以下:
2006-11-28 16:12:46 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-6001
2006-11-28 16:12:46 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 1234 ms
2006-11-28 16:12:46 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2006-11-28 16:12:46 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/5.0
2006-11-28 16:12:46 org.apache.catalina.core.StandardHost start
信息: XML validation disabled
2006-11-28 16:12:47 org.apache.catalina.core.StandardHost 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:\Informatica\PowerCenter8.1.1
\server\tomcat\conf\Catalina\localhost\adminconsole.xml
java.lang.UnsatisfiedLinkError: D:\Informatica\PowerCenter8.1.1\server\bin\pmjrepn.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:\WINNT\system32 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 the<INFA_HOME>\server\bin directory to the C:\WINNT\system32 directory.
<INFA_HOME> is the Informatica installation directory.
Re-start the Informatica Services Windows service.
Try it again, please let me know 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中的那个ODBC的链接,应该也有codepage的设置吧..改改试试..


问:
informatica server的code page是ISO 8859-1 ,你得改为UNICODE的模式,才能够比较适合做转换..你在workflow manager中的那个ODBC的链接,应该也有codepage的设置吧..改改试试..
谢谢斑竹。
问题是我没办法去改informatica server的配置。若是就用当前配置,有可能作到正确抽取中文么?可以作一些编码的转换来实现么?


答:
乱码,就找几个点的码制设定了..
源就那样了, ETL服务器上配的ODBC,可能会有codepage 相关; 再就是ETL 服务器, 你已设为ISO 8859-1,若是不对中文数据做转换,应该不会乱; workflow manager中,配置ODBC我忘了是否是也有code page 设定了..就这么几块..你分开检查一下了.你用个什么工具,经过系统ODBC去访问一下,若是看到的不是乱码,再从后面几点排这个错了..(修改了链接mysql的odbc,加上 stmt=SET NAMES 'utf8' 就行了,谢谢斑竹!)


Informatica学习笔记13:没有Lincense致使的问题


问:
各位兄弟们帮忙看一下,informatica的问题,我使用的是6版本,目标数据库是oracle 10g,在安装好,配置好的时候,执行workflow的时候报这样的错误
CMN_1022 Database driver error...CMN_1022 [
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
Database driver error...
Function Name : Connect
Database driver error...
Function Name : Connect
Database Error: Failed to connect to database 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是通的,应该就能够了吧.


问:
ODBC用的是informatica自带的odbc安装的,用的是window的,我也想用oracle 的驱动,可是我没有oracle 的Lincense key,我只有odbc的因此只能用odbc的了,系统odbc配置的图和workflow manager中配置odbc的图和你说的同样,配置好后,报的错误仍是同样的,急死了


答:
问题解决了,是key有问题!
艾!没有informatica的Lincense

 

Informatica学习笔记14:lookup中自定义sql有问题


powercenter 7.1 windows平台
source table w_test_fs
target table w_test_f
源表和目标表中都有字段col1和col2,这两个字段能够看做是联合主键吧 建了个unique index
mapping流程大概说一下


1.从源表取数据 select fs.col1,fs.col2,fs.**,... from w_test_fs fs


2.建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_fs fs where f.col1=fs.col1 and f.col2=fs.col2


3.建filter, 把lookup找出的lookup_row_id和步骤1选出的字段传给此filter
filter条件是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.col1=fs.col1 and f.col2 = fs.col2) is null;


执行这条sql查出0条记录
但我运行上面的mapping 仍是有数据流过filter,遇到过有部分数据流过(filter起了部分做用)、也遇到过数据所有流过(filter没起做用) 固然对应的mapping是不同的,我上面的mapping只是个例子 规则是同样的
请问你们遇到过或者有什么建议没有?


答:
已找到部分缘由,lookup中自定义sql有问题
Informatica学习笔记15:infopower如何实现增量抽取?


问:
在 informatica powercenter中如何实现增量抽取?我想了一下使用时间戳,可是这个时间戳如何去使用不是很明白,但愿各位高人在这边能指点一下,若是有例子更好,在这里先谢谢了!


答:
有时间戳就直接用呗,总有个办法记录上次抽取的时间的,也有办法设置本次的截止日期,而后 where timestamp > last_time and timestamp <= current_time,有时间戳的系统和工具没啥大的关系
问:那在参数中如何去调用呢?


答:
这个你看看mapping 的参数和变量那块吧.. help 当中有详细写..你这样问,太大,谁也很难花时间去详细写的.
关于增量抽取的问题,我在help里看到了如下内容:Use the following filter to incrementally extract data based on the SALES.sales_datetime column in the source: SALES.sales_datetime > TO_DATE (`

LastUpdateDateTime)ANDSALES.salesdatetime<TODATE(LastUpdateDateTime′)ANDSALES.salesdatetime<TODATE(‘

$SessStartTime')

 


小声的问下:这个时间戳的时间必定要是来自源表中某个字段值吗?若是源表中没有这样的时间字段,怎么办?


1.从源中找到变化和增量标识(多是时间字段或一些业务字段,标识位之类的),这样比较容易做.


2.如今有一些工具是能够从DB的log层面解析变化数据的,这样,就能够不用这样考虑了.


3.从DB的功能角度去想办法,找到增量或变化数据的方法,像oracle 有物化视图.


4.还有一些建数据库触发器或全表比对..


5. EAI..


还有一些方法吧,但多半用上面几种吧.
1保证要作的数据源中有标示更新的时间戳和标示逻辑删除的字段!
2在mapping设计中设置mapping变量,用来记录每次执行etl过程时的数据库时间(注意是源系统的数据库时间)
3记得更新mapping变量~其他的就不用说了
呵呵,向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 Administration 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 with the installation and enable the Repository Service after installation.STDOUT:......
请教你们,为何链接不上RESPOSITORY SERVCIE啊, 2个数据库链接测试都是 测试经过.


答:
和db 操做同样, 能够connect 只是前提保证,在执行大的SQL时,由于权限,网络,字符集不统一或大SQL的缘由,极有可能会失败.
你先描述一下,你全部DB是啥吧..不一样数据库,反应是不一样的.


问:
SQL SERVER 2000开发版+SP4+WINXP SP2 和 SQL SERVER 2005+sp1+ win2003 server+sp1 杨晓东说推荐用ORACLE , 但以前咱们在sqlserver2000和2005上都安装成功了,如今安装老是在上面的步骤经过不了,链接不上.
建2个数据库,2个用户,连repository库时,我干脆用sa登录,都链接不上repository services.
网络方面,我是服务器,客户端都装在个人本上,都是本机字符集方面, 我拿到的8.1是中文版的,操做系统也是中文版的. 以前用7的时候是英文版,那时候OS装的也是英文的,都是统一的.


答:
你先登陆到 http://smu-o7542xepp54:6001/adminconsole
user: admin
password 用你设定的那个, 进到console 页面,点击repository 图标,右面会显示一些红色的错误信息,你再看看log 那个tab 页上,会有详细的错误信息. 那里的信息,会比较细.
这确定是DB在执行SQL时,报的错。。。是否是和网络的firewall 有关系? 之前SQL SERVER出问题,多半都是网络,firewall 和SQL SERVER的设置上。
我曾在SQL SERVER上安装过pwc8.x,是没有问题的。 你找到那些详细信息,若是还不行,把信息贴出来。
我前几天也装过知识库用SQL Server2000的,好象没什么问题,不过就是以为在建知识库那的connectstring要用:主机名@数据库名这点不知道楼主注意到没有,这个环境下尚未碰到过其余问题,还有一个数据库只能对应一个知识库的,若是以前在某一数据库上建过知识库,那么第二次再在此数据库上建知识库也是无效的.所以,
建domain的数据库和建知识库的数据库最好分开,要建知识库的数据库最好是空库,至少也是不能有存放知识库的元数据.若是domain和知识库装在同一数据库中,那么只清除知识库的元数据而不清除domain信息,直接在数据库里头不太好清,最好是在控制台中对知识库用delete content而后删除知识库.


我讲的可能不是楼主的问题的解决方法.仅仅和你们分享一下小经验.


问:
在虚拟机上终于搞定, WIN2003SP1+SQLSERVER2005SP1. 安装过程和之前同样,为何在虚拟机上就成功安装呢, 以前安装成功也是在虚拟机上, 另外一个同事也是在虚拟机上安装成功的. 感谢楼上的各位.
请你们分析一下为何虚拟机上成功安装,而实体机却安装时报链接不上,而致使安装不成功呢?


Informatica学习笔记17:如何在PowerCenter中实现累加SUM


问:
我最近在设计一个mapping时,遇到一个问题:这个mapping要作的是,聚合(SUM)源表(BUSI_T_ENTRY)中的借方金额(DEBITAMOUNT)字段值,groupby的字段是源表中的年(ACCOUNTYEAR),月(ACCOUNTMONTH),地
区(AREA_CODE)三个字段。可是在作SUM的时候,是要作一个累进的SUM,好比说:当作2006年3月的SUM值时,2006年3月的SUM值是等于2006年1,2,3月的合计值。
我如今的作法是先在Aggregator中按年,月,地区分别作好当年每月的SUM值,而后再到下一个Expression中根据月(ACCOUNTMONTH)来作累加(好比,当月等于3时,我就把1,2,3月的SUM值加起来作为3月的聚合值),但是我这样作的时候,出来的结果,老是累加不起来,3月值仍然等于3月的当月SUM值。
请教各路大侠怎样作能够实现个人需求?或是个人作法有什么问题,须要怎么来改进?


答:
先将结果集排序..而后,你看看 cume 函数..应该能够做.
用cume好像不解决问题呀,这个只按月累加的,不一样地区和年要清零的。cume只能一直累加下去,能够用local variables,能够保留上一条的信息
设置三个变量,PRE_AREA,PRE_YEAR,CUME_VALUE,其中CUME_VALUE差很少是这个样子,
IIF(ACCOUNTAREA = PRE_AREA AND ACCOUNTYEAR = PRE_YEAR, CUME_VALUE + AMOUNT, AMOUNT )
固然要注意按地区,年,月先排序。具体能够参照随机文档里面的Using Local Variables ->Store Values Across Rows。
想了想,在aggregator里面用cume遇到不一样的group by条件后,应该是能够自动清0的,因此仍是用cume简单些。
我以为 cume 能实现, 实在不行,一次只处理一年的(这样考虑的东西少,最简单),用参数控制一下where子句..实在不行,能够考虑,将
地区,年,月,合成一个字段..这个咋都能做..
能做的方法有多种..但我以为这种最简单.


问:
我如今目前就是只处理一年的,上午我试了下,用cume是能够的作的,可是之后确定是不止一年的数据。
还有David说:”把地区,年,月合成一个字段,这咋都能做“,我有点不理解,能具体一点点吗?


答:
字符串与呀..
我以为仍是一年一年处理比较好..
你能够做一个session,用参数来控制where 子句,每次做一年的...你用外部一个程序控制改变这个参数,并屡次执行(pmcmd )..这样比较简单..
我知道把地区,年,月合成一个字段是字符串与,个人意思是说:把地区,年,月合成一个字段后,在我作累积SUM的时候怎么来用,为何这样就能够”咋都能做“了?
很差意思,刚刚没讲清楚。informatica <wbr>学习日记整理(转)
再用cume 呀.


Informatica学习笔记18:PC8.1运行出错


问:
:confused:
版本PC8.1
用了一个最简单的例子,就源和目标的一个一一映射。应该说不会是流程的问题和参数设置问题。
运行后错误日志以下:
Message: *********** FATAL ERROR : Unexpected Condition in file
[\ZeusbuilderProduction\view\powrmart\common\odl\oracle8\oradriver.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. 请用 DataDirect ODBC,从新导入源和目标结构,再做一个简单的例子,试一下。


问:
建议:
1,个人PC8已经安装好久了(不过lisence还没过时,改过系统时间啦),因此呢机器已经重起不少次啦,应该不是这个问题


2,源和目标也从新导过,同样报错,另外我无论哪一个task都是报这同样的错,因此应该不是某个组件的参数设置不合理(最后一次作的一个mapping根本就没有用到转换组件);
还有一点,我如今用的是PC8.1.0版本,但以前在这个知识库里还原进来的是PC8.1.1的.rep文件,因此我怀疑是否是版本不兼容,可是今天我又把PC8.1.1的知识库删了(只是把知识库及其内容删了,没将存放知识库的oracle用户删了重建),而后又建立了个PC8.1.0的新知识库,在这个平台下又作了mapping,运行后仍是报同样的错。。。
你说的ODBC的问题我也想过,但不知道怎么来检查,由于错误信息里的那个路径我还没找到。。但愿指点一下


答:
你是按我说的用 datadirect ODBC创建一个ODBC,再用designer导入源,目标,做一个简单的mapping。。在workflow manager 中,你可创建基于oracle native driver的链接。这个问题,就是ODBC的driver 不对。。要用 DataDirect 的那个
问题解决了。。。
缘由是我导表结构时,使用的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提供的ODBC导表结构,这样作出来的mapping能正常运行


我大概记着点,好像是Oracle客户端版本比较低,会有这个问题,因此1 时,导入结构会有问题.
Informatica学习笔记19:多行记录合并问题


问:
请教各位高手,以下记录:
a b c
-----------
1 a b
1 c d
1 e f
2 a b
2 c d
2 e f
如何作到
a
-----------------------------
1 a b c d e f
2 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 列))

相关文章
相关标签/搜索