【发布时间】:2015-11-07 06:36:04
【问题描述】:
我需要通过 SQLPLUS 将选择查询的结果输出到文件中,然后还将这些记录插入“已发送”表中。虽然我不知道如何重新使用该结果存储在“已发送”表中。我必须使用光标吗?我对游标不是很熟悉,但我想这可能是解决方案?还有其他方法吗?顺便说一句,这是在一个 shell 脚本中。
这是我目前所拥有的:
sqlplus -S <<ENDOFSQL || eval 'echo "Error occurred during sqlplus command line $LINENO" 1>&2; exit 1'
$USER/$PW@//$IP_PORT/$DB
SET PAGESIZE 50000
set feedback off
SET MARKUP HTML ON SPOOL ON
SET NUM 24
SPOOL REPORT.xls
select * from SOMETABLE A WHERE not exists (select 1 from SENT_TABLE B where A.ID = B.ID);
SPOOL OFF
SET MARKUP HTML OFF SPOOL OFF
(NOW USE RESULTS FROM SPOOL AND INSERT INTO THE "SENT" TABLE)
ENDOFSQL
【问题讨论】:
-
您必须使用
SLLDRSQL Loader 脚本将文件加载到另一个表中。这是最快的方法。否则,您可以使用UTL_FILE包使用file操作并编写一个 PLSQL 块来加载文件。
标签: sql oracle shell sqlplus spool