informatica 在抽取EXCEL中遇到问题及INFA售后给出的建议。

来源:互联网 发布:有意思的网络小说 知乎 编辑:程序博客网 时间:2024/04/29 16:48

作者: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


0 0
原创粉丝点击