作为过程的一部分,我们得到一个.gz格式的输入文件。我们需要解压这个文件,并在文件的最后添加一些后缀。输入文件有时间戳,所以我试图在解压和重命名这个文件时使用过滤器。
输入文件名 。
Mem_Enrollment_20200515130341.dat.gz
步骤1:解压这个文件: (按预期工作)
gzip -d Mem_Enrollment_*.dat.gz
输出:
Mem_Enrollment_20200515130341.dat
第2步:重命名这个文件:(重命名时的问题)。
同样,我也是按照这个模式去做的,但我知道在这种情况下,这样做是行不通的。那么,我应该怎么做重命名这个文件?
mv Mem_Enrollment_*.dat Mem_Enrollment_*.dat_D11
输出 :
Mem_Enrollment_*.dat_D11
预期输出 :
Mem_Enrollment_20200515130341.dat_D11
尝试
for fn in Mem_Enrollment_*.dat
do
mv ${fn} ${fn}_D11;
done
通过数据阶段,你可以通过 "ls Mem_Enrollment_*.dat.gz "循环执行命令阶段的ls输出,然后在循环输出列表时使用@FM作为分隔符。然后你可以把gzip和重命名分解成两个独立的命令,这样有助于工作中的可读性。
这里唯一需要注意的是,由于Datastage内部的一些问题,Start Loop阶段不接受定界符中的@FM。所以你需要设置一个等于它的用户变量,并将其传递给标记。