Shell脚本循环并执行目录中的sql文件

时间:2018-02-13 14:05:30

标签: oracle shell

我对shell脚本很新,并尝试创建一个shell脚本,该脚本进入一个目录并选择文件夹中的* .sql文件并执行标识的文件。

我知道可以从shell脚本中调用sql文件,但我想将SQL文件与shell脚本本身分开,因为脚本数量非常多,而且在shell外部维护更容易本身。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以通过包含要执行的所有* .sql文件名来动态生成临时shell脚本。然后在最后运行这个shell脚本。

cd your_sql_script_path  

final_script="/your_script_path/final_script.sh"

echo "sqlplus -s /nolog << EOF
CONNECT user/password;

whenever sqlerror exit sql.sqlcode;
set echo off 
set heading off" > ${final_script}

for sql_file in *.sql;
do
  echo "@${sql_file}" >>${final_script}
done

echo -e "exit;\nEOF" >>${final_script}


chmod +x ${final_script}

sh ${final_script}

答案 1 :(得分:0)

你可以试试这个:

$ for i in *.sql; 
do 
    echo "$i and do your stuff"; 
done

输出:

script01.sql and do your stuff
script02.sql and do your stuff