如何在UNIX中执行多个SQL文件?

时间:2014-03-24 12:12:12

标签: sql shell unix oracle11g sh

我在名为sql_scripts的文件夹中有n.sql文件,例如1.sql,2.sl,3.sql .... n.sql。我想使用单个shell脚本执行所有这些文件。什么是最简单和最优选的方式?

3 个答案:

答案 0 :(得分:1)

cat 1.sql 2.sql 3.sql ... n.sql |sqlplus username/password@sid

或者

cat *.sql|sqlplus username/password@sid

答案 1 :(得分:0)

循环浏览文件,依次执行每个文件:

for file in /home/user/sql_scripts/*.sql; do
    echo "Executing $f.."
    sqlplus user/pass @"$f"
done

您可以使用@filename.sql表示法在SQLPlus中运行文件。

答案 2 :(得分:0)

如上所述Josh,

在sqlplus中使用@ sqlscript.sql是最好的方法,但这种技术可能不适用于所有数据库,而是可以修改你的脚本,如

su - <db user>
connect to database <your db name > 

(这又根据您的数据库而变化,即 在db2中它就像db2 connect to,在oracle connect to etc)

for file in /home/user/sql_scripts/*.sql; do
    echo "Executing $f.."
    db2 -tvf "$f" <db2>
    @"$f"         <oracle/sqlplus etc>   
done

根据您的数据库和要求修改上述脚本。