双重循环并对第一次出现特殊处理—一个很纠结的dos脚本

任务:获取table_for_view.lst中的一行(每行格式为schame.table_prefix),抓出符合schame.table_prefix[四位后缀]模式的所有的表清单,构建一个视图,即,写出创建视图的语句。例如:

create or replace view schame_view.table_prefix_all as
select * from schame.table_prefix0001
union
select * from schame.table_prefix0002
union
select * from schame.table_prefix0002

对于第一个以后的都需要加上”union“,因此需要再第二重循环里面加以区分。最后跑成功的脚本是这样的(它的思路是通过环境变量标志第一次出现,它的问题是,打开命令行窗口后再运行一遍就是错误的):

@echo off

for /f "tokens=1,2* delims=." %%a in (list\table_for_view.lst) do (
java -jar TableListRetrieve.jar -env gpEnv.ini -schema %%a -table %%b____ -tablist list\%%b.forview.lst
echo create or replace view schema_view.%%b_all as 
for /f "tokens=1,2* delims=." %%x in (list\%%b.forview.lst) do if not defined schema_view.%%b_all (
echo select *  from %%x.%%y && set schema_view.%%b_all=a
) else (
echo union select * from %%x.%%y
)
)

不知道这个为什么不行(循环内部set /a count=0总是不起作用,并且后面的set /a count+=1也没有效果,结果是count的值没有变化):

@echo off
set /a num=0

for /f "tokens=1,2* delims=." %%a in (list\table_for_view.lst) do (
set /a count=0
java -jar TableListRetrieve.jar -env gpEnv.ini -schema %%a -table %%b____ -tablist list\%%b.forview.lst
echo create or replace view schema_view.%%b_all as 
for /f "tokens=1,2* delims=." %%x in (list\%%b.forview.lst) do if %count% EQU %num% (
echo select *  from %%x.%%y
set /a count+=1
) else (
echo union select * from %%x.%%y
set /a count+=1
) 
)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值