want to run multiple SQL script file in one go with in SQLPLUS

风流意气都作罢 提交于 2019-12-03 17:50:06

问题


I have to run multiple SQL script file in one go.

Like every time i have to write command in SQLPLUS

SQL>@d:\a.txt 
SQL>@d:\a2.txt
SQL>@d:\a3.txt
SQL>@d:\a4.txt

is there any way put all file in one folder & run all script file in one go without missing any single file like @d:\final.txt or @d\final.bat


回答1:


There is no single SQL*Plus command to do that, but you can create a single script that calls all the others:

Put the following into a batch file

@echo off
echo.>"%~dp0all.sql"
for %%i in ("%~dp0"*.sql) do echo @"%%~fi" >> "%~dp0all.sql"

When you run that batch file it will create a new script named all.sql in the same directory where the batch file is located. It will look for all files with the extension .sql in the same directory where the batch file is located.

You can then run all scripts by using sqlplus user/pwd @all.sql (or extend the batch file to call sqlplus after creating the all.sql script)




回答2:


Some tricks and command can help you to generate master.sql file and you can run from that location.

 c:\direcotory_location\dir *.sql /-t /b >master.sql

Go to the parent directory open master.sql open using notepad++ remove master.sql line and use regular expression to replace

   \n  with \n @

go to cmd From cmd

    C:\root_directory\sqlplus user/password @master.sql

I find this process very convenient if i have 30 to 40 scripts placed in a single directory.




回答3:


If you're using gnu linux, you could use process substitution:

sqlplus USERNAME/PASSWORD@DOMAIN < <(cat a.txt a2.txt a3.txt a4.txt) 
# ... or a for loop on input files, inside the process substitution

Alternatively, you can create a .pdc file and list your sql scripts:

-- pdc file
@a.txt;
@a2.txt;
@a3.txt;
@a4.txt;

and call sql plus:

sqlplus USERNAME/PASSWORD@DOMAIN < my_scripts.pdc



回答4:


It might be worth the time to write a shell script that runs multiple files.

#!/bin/ksh
sqlplus user/password@instance <<EOF
@a.txt
@a1.txt
exit
EOF

For more on the syntax, look into Here Document




回答5:


here is similar solution but you do not have to iterate and to have special formated an sql file names. You compose an one sql file and run it once.

cat table_animal.sql > /tmp/temp.sql
cat table_horse.sql >> /tmp/temp.sql
cat table_fish.sql >> /tmp/temp.sql
sqlplus USERNAME/PASSWORD@DOMAIN @/tmp/temp.sql



回答6:


For Windows try copy /b *.sql +x final.sql

sqlplus user/password @final.sql




回答7:


Use *.PDC extension file like this

install.pdc file content

whenever sqlerror exit sql.sqlcode

prompt started!

prompt 1.executing script 1
@@install/01.script_1.sql

prompt 2.executing script 2
@@install/02.script_2.sql

prompt 3.executing script 3
@@install/03.script_3.sql

prompt finished!

where @@install/ points in which directory is the SQL script located




回答8:


Special Thanks to Joseph Torre

sqlplus login/password@server @filename

reference link



来源:https://stackoverflow.com/questions/22680829/want-to-run-multiple-sql-script-file-in-one-go-with-in-sqlplus

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!