informatica 在抽取EXCEL中遇到問題及INFA售後給出的建議。

作者:lianghc


1.測試環境:

服務器:

操作系統:windows server 2008 R2 Enterprise (X64)

Informatica版本:9.6.1 hotfix1 (x64)

MSOffice:Professional2010 (x64)

客戶端:

操作系統:Win7 旗艦版 (x64)

Informatica版本:9.6.0  (x86)

MS Office:Professional 2010 (x86)

2.需求描述:

           2.1需要抽取excel(xlsx格式)數據,excel抽取具體內容使用固定模版,第一行爲表頭,其餘爲數據,一個excel文件包含多個sheet頁;

           2.2抽取excel文件放在INFA 服務器所在機器某固定文件夾下,有多個文件;

           2.3infa抽取的過程中,操作人員有可能讀寫excel文件,假如文件處於編輯狀態,infa是否可以抽取excel數據?如若不能,有沒有其他的解決方案;(問題三需要指導方案。)

           2.4 除了按計劃執行抽取excel,要求excel 數據內容有變化立馬抽取,如若不能監測變化立馬抽取,是否可以在前臺頁面手工點擊按鈕抽取。

3.目前困境:

          使用Informatica抽取excel時,工作流意外終止,日誌無報錯。明細如下:

3.1 運行屬性中錯誤:

3.2日誌無錯誤,下圖是完整日誌信息,終止在向數據庫發送sql.

 

 

 

3.3 console中日誌信息

 

         

 3.4 console 中服務日誌信息

 

 

4.Infa KB中說支持2010 x64

 

 目前主要是數據抽取不過來的問題,報錯是意外終止。不知如何解決。


售後答覆:

第一點:用 PowerCenter系列產品來抽取 Excel數據的三種思路。 

1)      第一種,經由 ODBC Driver,並通過在 Windows中自帶的數據源管理器來創建 ODBC數據源,然後通過 PowerCenter Server去抽取 ODBC 數據源的數據的方式來實現。這種方式的問題是,基本都需要以人工的方式去打開每個 Excel文件,定義數據區間(相當於定義每一張表),然後在數據源管理器中爲每一個 Excel文件創建一個對應的條目,最後還要在 PowerCenter中導入這些條目後進行mappings的開發。這種方式並不適合Excel文件數量較多,且數目和文件名都不固定的情況,因爲需要太多人工操作。     

2)      第二種,使用網上即可獲取的一些小工具,例如 xls2csv等,可以以命令行/腳本的方式,將 Excel文件格式批量轉成 CSV文件(一個有多sheets Excel文件在被轉化後,會生成多個對應的 CSV文件)。然後,用 PowerCenter來處理 CSV 文件,情形會簡單得多。整個過程可以通過在 workflow中設計一些 command tasks來進行預處理,然後藉助變量等手段,完成這一場景中的數據抽取。    

3)      第三種,就是要用到 PowerCenter UnstructuredData Option。這是 PowerCenter 的一個選件,專門用於解析複雜的文件格式,其中包括 PDFWordPPTExcel。該選件的功能很強大,但是對於你們而言,意味着有一定的軟件license購置成本,以及要花一點時間學習如何基於 UDO 來進行非結構化/半結構化數據的解析開發。

以上三種思路,供你們參考,可結合客戶的具體情況來決策。

第二點,現在的 ETL 作業運行後會失敗。截圖中,有很多信息顯示不完全,我們也沒法進行進一步的解讀和分析。所以,還望提供完整一點的日誌。

 

第三點,如果 Excel 文件正被其它應用打開和編輯(例如被 MS Excel本身),那麼在 Windows平臺下,可能因爲文件句柄的控制權的問題,你的 PowerCenter,或者前面提到的轉換工具,就不能在同一時間段內去進行訪問,這是由 Windows的文件訪問控制機制實現的,並不取決於哪一家的技術實現。實際情況,你可以嘗試一下,相信你會有答案。

 

第四點,Informatica目前還沒有提供哪種技術手段及產品模塊,用於針對 Excel文件進行變更數據的監視和捕獲。我們有針對關係型數據庫的 CDC(變更數據捕獲),那是通過監視數據庫日誌來實現的。我們也有 Viber Data Stream,可以針對 Flat Files 進行內容變更捕獲。但是針對 Excel這種特定格式的文檔,我們確實還沒有相應的 adapter來做這事。建議可以在操作系統的 shell層面上,編寫腳本,用於定期輪訓這些文件的最近一次修改的日期和時間,並與上一次輪訓記錄的時間做比較。這樣就能發現哪些文件發生過變更,然後就能觸發一次針對這部分文件的 ETL過程。

 

以上思路,還請結合實際情況來分析和採納。


補充:

最後我採用VBA將excel的數據導入oracle: 

使用VBA將EXCEL的數據導入 ORACLE


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