我有一个信息映射 - 一个具有Sq->t(x)->tgt
这里我只在满足某个条件时填充目标(这是一个平面文件),这个条件包含在转换中。
现在我的要求是如果目标(一个txt文件)即使只有一个记录也会被填充,它应该向两个人发送一封电子邮件。
我使用的是mailx
Unix命令,但我不知道如何使用Unix脚本检查目标文件中是否有任何记录。这就是我的尝试:
if [ "/data/informatica/Services/myfolder/TgtFiles/filename.csv" = "1" ]//here i am trying to check if there are any records in the target
then
mailx -s "Target is populated" "reciepent1@abc.com reciepent2@abc.com "<<ed
Validation completed
ed
else
exit
eod
fi
答案 0 :(得分:1)
不清楚shell informatica正在调用什么,但这应该适用于任何bourne衍生物(不是csh)。
if [ `wc -l < "/data/informatica/Services/myfolder/TgtFiles/filename.csv"` -gt 0 ]
# //here i am trying to check if there are any records in the target
then
mailx -s "Target is populated" "reciepent1@abc.com reciepent2@abc.com "<<ed
Validation completed
ed
else
exit
eod
fi
我无法轻松测试mailx部分,也不知道eod
对于informatica的意义。如果我将then
正文替换为echo yep
,将else
正文替换为echo nope
,则会按预期工作。
如果您可以使用更新的命令替换,请将第一行替换为
if [ $(wc -l < "/data/informatica/Services/myfolder/TgtFiles/filename.csv") -gt 0 ]
这将为任何复制代码的人树立一个好榜样。
IHTH。
答案 1 :(得分:0)
这也可以使用Command Task
中Workflow
之前的链接上的条件来实现。您需要在Session
和Command Task
之间的链接上添加以下条件:
$your_session_name.TgtSuccessRows > 0
如果您使用Post-Session Success Command
调用脚本,则需要先将其更改为Command Task
。