在 shell 脚本中按行读取配置文件信息,并近程连贯 Oracle 数据库,为库中的表创立 20170101 到 20220101 日期的分区
#!/bin/bash
#读取 Lv_ConfigDb 配置信息
if [-f $Lv_ConfigDb] ; then
while read line
do
#连贯数据库信息
Lv_str=`sed -n '2p' ${Lv_ConfigDb} | awk -F"=" '{print $2}'` #获取第二行数据,以 = 号为分隔符,取第二个字符串
#sqlplus 目录
Lv_sqlplus=`sed -n '4p' ${Lv_ConfigDb}| awk -F"=" '{print $2}'` #同理获取第四行数据
#sq1 文件目录
Lv_table=`sed -n '10p' ${Lv_ConfigDb}| awk -F"=" '{print $2}'`
done < $Lv_ConfigDb
else
echo "${Lv_ConfigDb} 不存在”fi
partition=${Lv_table}partition_table2.txt
1=$(cat "$Lv_table"/partition_table2.txt| wc -l) #获取文件中共有多少条数据
echo ${1}
for((i=1;i<=$1;i++))
do
table=$(sed -n "$i"p $partition)
${Iv_sq1p1us} ${Iv_str} <<EOF
declare
cursor acur is select to_char(to_date('20170101','yyyymmdd')+rowmum-1,'yyymmdd') from dual connect by rowmum<=to_date('20210617','yyyymmdd')-to_date ('20170101', 'yyymmdd')+1; -- 获取两段日期之间所有日期的游标
v_day varchar2(8 char):=";
begin
open acur;
loop
fetch acur into v_day;
dbms_output.put_line(v_day);
exit when acur%notfound;
execute immediate 'alter table $table add partition P_'||v_day||'values('||v_day||')';
end 1oop;
close acur;
end;
/
exit;
EOF
echo $table
echo "表分区己创立"
echo "--------------------------------------------"
done