unix - 如何使用列值作为使用 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}'
解决方案
推荐阅读
- c# - Linq to Entities Group By 有一些没有元素的组
- javascript - 将按钮添加到 Javascript 倒计时
- java - 如果您想要接近其尾部的元素,LinkedList 是否从末尾开始搜索?
- dart - (Flutter) 如何在不按“完成”的情况下自动监听 TextField 中的变化?
- javascript - HTA - 提交表单后如何关闭 HTA
- android - 微调器未出现在菜单栏中
- text - 与 tf idf 和 chi square 合作后我必须做什么
- angular - 根据 Angular 中的场景执行 Typescript 函数
- android - 从文件选择器获取正确的路径
- mongodb - 比较 MongoDb 中的两个字段