- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Informatica字符集整理
理论基础
从数据通路的角度看,Informatica中数据的流向是:Source Storage -Transformations-Target Storage。为了保证数据不至于丢失,靠后的target的字符集需要兼容靠前的source的字符集。如下图:
整个ETL的数据流动过程都是由Integration Service(下文简称IS) Process来完成。当Informatica与数据库交互时,因为会用到数据库的client driver,所以,运行IS Process的服务器的数据库客户端设置会影响到Informatica与数据库的数据交换。因为数据经历了如下流向:Database A Server-Database A Client-IS Process-Database B Client-Database B Server。当Informatica从Flat File加载数据时,则需要指定文件使用的字符集。它的数据流向是:Flat File-IS Process-Database A Client-Database A Server。
IS Process可以以两种方式move数据:ASCII和UNICODE。ASCII模式下,IS Process不会做character conversion,即input的binary流是什么样子,output什么binary流。而在UNICODE模式下,Informatica会检查source和target的字符集是否兼容,重要的是IS Process会做character conversion,在其内部以UTF8方式传输数据。
因为Informatica的Client需要和Repository Database交互,所以它们的字符集需要和Repository Database的一致或为对方的子集。Informatica的Client包括:IS Process、PowerCenter Designer、PowerCenter Workflow Manager等。一般Informatica的Client的字符集设置是跟着运行该Client的本地OS走的,例如:运行在简体中文的Window上运行PowerCenter Designer,此时它使用的code page是“MS Windows Simplified Chinese”;而在英文系统Window上运行IS Process,那么它使用的code page就是“MS Windows Latin 1 (ANSI)”。在Unix系统上的Client同样道理。Informatica的Client字符集设置,不影响数据在Informatica的ETL过程,只是影响它们自己和Repository Database的数据交换。
案例分析
案例I
环境:
Source:Oracle Database(UTF8)Target:Oracle Database(UTF8)IS Process Code Page:MS Windows Latin 1 (ANSI)IS Movement Mode:ASCIINLS_LANG:AMERICAN_AMERICA.WE8MSWIN1252
Mapping设置:Source Connection Code Page=UTF8Target Connection Code Page=UTF8
ETL结果:中文为乱码
分析:因为NLS_LANG设置的是WE8MSWIN1252,虽然Source Connection Code Page和Oracle Database Server都使用UTF8编码,但是在从DB Server-DB Client时乱码已经产生,Informatica的Source Connection拿到的就是乱码了。
解决:修改NLS_LANG为“AMERICAN_AMERICA.AL32UTF8”或者“AMERICAN_AMERICA.ZHS16GBK”。此时,IS Movement Mode是ASCII还是Unicode都可以。
解释:在IS Movement Mode=ASCII情况下,Source/Target Connection Code Page设置为“UTF8”、 “GBK”或者“ISO8859-1”等都可以,因为此时DB Server-DB Client和DB Client-DB Server不会发生数据丢失和乱码,同时Informatica不会去转码。这保证DB ClientàIS ProcessàDB Client过程中binary数据流没有发生变化。
在IS Movement Mode=UNICODE情况下,就不同了
文档评论(0)