nformatica學習筆記

轉自:http://blog.csdn.net/suncrafted/article/details/3739253


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.xxx,... 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') AND SALES.sales_datetime < TO_DATE (`$$$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的時候怎麼來用,爲什麼這樣就可以”咋都能作“了?
不好意思,剛剛沒講清楚。:)
再用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 列))


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章