Informatica工作流自动生成参数文件无法读取问题咨询
这个问题我在实际项目里碰到过好几次,大概率是下面几个原因导致的,你可以逐一排查:
文件编码不匹配
Informatica对参数文件的编码很挑剔,自动生成的p1可能带了UTF-8 BOM(字节顺序标记),或者用了Informatica不兼容的编码格式,而你手动创建的文件是系统默认的ANSI/不带BOM的UTF-8,所以能正常识别。
你可以用文本编辑器(比如Notepad++)打开自动生成的p1,查看编码格式,然后修改wf1生成文件的步骤,指定输出为不带BOM的UTF-8或者ANSI编码。文件权限不足
wf1生成p1时,文件的所有者或权限设置可能和手动创建的不一样,导致Informatica运行wf2的服务账号没有读取权限。比如wf1用某个用户生成文件,权限是rw-r-----,而手动创建时用的是Informatica服务用户,权限是rw-rw-r--。
可以用ls -l(Linux)或者查看文件属性(Windows)检查权限,确保Informatica的运行用户对p1有读取权限。参数文件格式有隐藏错误
自动生成的p1可能存在格式问题,比如节的名称前后有多余空格、换行符,或者大小写不匹配。比如把[s1.d1]写成了[ s1.d1 ],或者会话名/文件夹名的大小写和Informatica里的实际名称不一致(Informatica参数文件的节是区分大小写的)。
你可以把自动生成的p1和手动创建的版本用对比工具(比如Beyond Compare)比对,或者用文本编辑器开启“显示所有字符”功能,查看是否有隐藏的格式错误。文件写入不完整就被读取
wf2可能在wf1还没完全把p1写入磁盘时就开始读取了,导致读到的是不完整的文件,触发VAR_27016警告。这种情况常见于wf1和wf2的触发时机没做好衔接,比如wf1的会话刚结束,但操作系统还在缓冲写入,wf2就启动了。
解决方法是确保wf1完全完成(包括文件写入磁盘)后再触发wf2,比如在wf1里加一个命令任务执行sync(Linux)或者等待几秒,或者用Informatica的事件等待任务监控p1文件的生成完成。文件路径不一致
虽然你配置了wf2使用p1,但wf1生成的文件路径可能和wf2期望的路径有细微差异,比如wf1生成到了/tmp/p1.txt,但wf2配置的是绝对路径/informatica/params/p1.txt,而你手动创建时放在了正确的路径里。
仔细核对wf1的输出路径和wf2参数文件配置的路径,确保完全一致,包括相对路径和绝对路径的区别。
内容的提问来源于stack exchange,提问作者rcmaiden

