意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

一些shell脚本的写法

来源:恒创科技 编辑:恒创科技编辑部
2024-02-09 04:25:59

在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


一些shell脚本的写法

上一篇: 04_Linux基础-.&amp;..-cat-tac-重定向-EOF-Shell-more-ps-less-head 下一篇: 手机怎么远程登录云服务器?