我希望有人可以帮助我使用我的shell脚本。我有一个列出不同表前缀的文件。
该文件如下所示:
cat table_names
table:1234:nfl
table1:2345:nhl
table2:5555:nba
table3:3355:mls
table4:2463:echl
我每周的每一天都有不同的表格。
daya
dayb
dayc
dayd
daye
dayf
dayg
dayh
我有另一个文件告诉我当前的表是什么
cat today_table
Today's active table is dayf
我要做的是使用当天的当前活动表查询每个表前缀(table-table4)。
这是我到目前为止所做的:
#!/bin/ksh
active_table=$(today_table|awk '{print $5}')
prefix_table=$(cat table_names|grep -v ^#|awk -F":" '{print $1}'|sort -u)
today=`date "+%Y-%m-%d"`
OutPutDir="/tneal01/SPOOL"
OutPutFile="error"
Execsqlstatement1="select
to_char(current_date,'YYYYMMDD') day,
count(*) Total
from ${prefix_table}.${active_table}
GROUP BY to_char(current_date,'YYYYMMDD')
#adding connection details here
$ORACLE_HOME/bin/sqlplus *********** << Eossql
set lines 80
set pages 50000
set timing on
spool tneal01/SPOOL/counts.`date +%Y-%m-%d`.tmp
$Execsqlstatement1
/
spool off
quit;
Eossql
grep "ORA-" $OutPutDir/$OutPutFile.$today.tmp
if [ $? -eq 0 ]
then
echo "LOG MESSAGE sql select failed"
exit 0
我遇到问题的部分是循环。我几乎要看看当前的#34; active_table&#34;并对所有五个表运行查询并将结果假脱机到文件
示例是:
今天的活动表= dayg
select ***
from table.dayg
where .....
select ***
from table1.dayg
where .....
select ***
from table2.dayg
where .....
select ***
from table3.dayg
where ....
select ***
from table4.dayg
where .....
所以假脱机文件看起来像
dayf table
Monday July 8th
table count =31
table1 count =44
table2 count =33
table3 count =55
table4 count =23
希望我能清楚地解释清楚。
编辑:我可以在Perl或shell中编写它。这两项建议都将受到高度赞赏感谢阅读!