如何在Informatica PowerCenter中使用Transaction Control Transformation且不生成静态目标文件?
解决Informatica PowerCenter动态输出时生成空静态.out文件的问题
问题场景
已通过Informatica PowerCenter完成ETL开发,借助Transaction Control Transformation实现了动态输出文件且运行正常,但任务执行后会默认生成一个与映射中目标文件同名的空静态.out文件,仅需保留动态生成的文件。
可行解决方案
1. 调整会话目标文件生成规则
打开对应会话的Properties标签页,找到Target File Options分组:
- 将
Create Target File选项设置为If Output is Generated,仅当有数据输出时才创建目标文件 - 若存在
Truncate Target相关选项,同样设置为仅在有数据写入时执行
2. 添加会话后置命令清理空文件
在会话的Post-Session Command中添加系统命令,根据操作系统类型选择:
- Windows环境:
if exist "目标文件路径\静态文件名.out" for %f in ("目标文件路径\静态文件名.out") do if %~zf equ 0 del "%f" - Linux/Unix环境:
[ -s "/目标文件路径/静态文件名.out" ] || rm -f "/目标文件路径/静态文件名.out"
替换命令中的文件路径和名为实际的静态.out文件信息即可。
3. 优化动态文件名配置
确保映射中不指定固定的静态目标文件名,完全通过动态参数传递文件名:
- 在会话的Target配置页,将文件名设置为预定义的变量(如
$$DYNAMIC_OUTPUT_FILE) - 确保Transaction Control中传递的动态文件名完全覆盖原静态文件名定义,避免映射层面存在固定文件名残留
内容的提问来源于stack exchange,提问作者Toqa
相关产品推荐
相关产品推荐

