首页 > 解决方案 > 如何使用列值作为使用 unix ksh 脚本从表创建的文件名的一部分

问题描述

我有一个从雪花表创建文件的 Unix ksh 脚本。我需要在生成的文件名中使用此表中某一列的值(所有行的值相同)。

而不是这个... filename=My_File_ date +%Y%m%d.txt

我想要这个... filename=My_File_ 202120 .txt

...取自此表中的“Week_ID”列:

可乐 Col_B 周_ID 寒冷的
202120
202120
202120 蜥蜴
202120

这是我的 ksh 脚本的模拟版本。什么代码以及在哪里添加它以获得所需的文件名?

==================================

#!/usr/bin/ksh

set +x   

. /temp/users/omega/.tdlogon_prd2

TZ=":US/Pacific"

pipeFile=My_File_${WeekID}.pipe
filename=My_File_${WeekID}

rm -f ${pipeFile} ${filename}.txt

echo "COL_A|COL_B|WEEK_ID|COL_D" > ${filename}.txt


np_fexp <<EOF
 
.LOGTABLE ABC_DB.all_audiences_${Date};
 
.BEGIN EXPORT SESSIONS 10;


SELECT 

  ''||COALESCE(TRIM(COL_A),'')||'|'
    ||COALESCE(TRIM(COL_B),'')|| '|'
    ||COALESCE(TRIM(WEEK_ID),'')|| '|'
    ||COALESCE(TRIM(COL_D),'')
    
from  ABC_DB.my_table

;



.EXPORT OUTFILE ${pipeFile} 


MODE RECORD  
FORMAT TEXT; 
.END EXPORT; 

.LOGOFF;
.QUIT;
EOF
 
rc=$?

sed 's/\s\+$//g' ${pipeFile} >> ${filename}.txt


rm -f ${pipeFile} 

==================================

我想我需要添加这样的东西,但我不确定它是否正确或在上面的 ksh 脚本中添加它的位置:

EXPORT REPORT FILE=${WeekID};
SELECT COALESCE(TRIM(WEEK_ID)) 
FROM ABC_DB.my_table
GROUP BY 1;
.IF ERRORCODE <> 0 THEN .QUIT 1;
.EXPORT RESET;

WeekID='${WeekID}'

标签: unixksh

解决方案


推荐阅读