2013-05-28 152 views
0

执行多个SQL文件,我有一个SQL文件运行thorugh一个UNIX shell脚本query.sql,并将其引导的输出中,以被称为result.sql另一个SQL文件在单UNIX Shell脚本

第一个文件将给出下面的示例输出将被写在result.sql,

drop * from table1; 
drop * from table 2; 
drop * from table 3; etc.. 

我需要执行在一个shell脚本都query.sqlresult.sql,这将会创建一个名为作为output.txt一个输出文件。我怎样才能做到这一点?

回答

1

东西这个想法应该工作:

sqlplus -s username/[email protected] << EOF 
@query.sql 
spool output.txt 
@result.sql 
spool off 
EOF 
+0

您好,感谢您的意见。实际上,result.sql是query.sql的输出。在这里我需要执行第一个查询文件(query.sql)并在第二个文件(result.sql)中获取输出。这两个文件需要在同一个shell脚本文件中执行,并输出result.sql以写入output.txt文件。 – Chandru

+0

嗨@Ed,我的第一个文件query.sql包含下面的连接用户名/密码@ SID 每当SQLERROR EXIT 1; 组LINESIZE 32767 集标题关闭 组TERMOUT关闭 组trimout上 集合页大小50000 组trimspool上 组反馈OFF SET SQLBLANKLINES ON --set标记HTML ON 回声OFF 阀芯/ TMP /陈/result.sql SELECT CONCAT(CONCAT(,TABLE_NAME '选择从COUNT(*)'), ';')AS查询集 FROM USER_TABLES WHERE REGEXP_LIKE(LOWER(TABLE_NAME), '^ bpjd_job_dependency_(预| PST)_' ) order by TABLE_NAME desc; 假脱机; 退出; – Chandru

+0

你的'query.sql'似乎很稳固。我在上面的答案中移动了'spool output.txt',所以它就在'@ result.sql'之前;因此它只会捕获运行'result.sql'时的输出。您还需要在运行时指定文件夹:'@/tmp/chan/result.sql'。 –