我通过SQL连接到Oracle数据库,我希望编写一个查询,该查询返回一个月数据集,然后将该数据提取到一个分隔的文本文件中。我知道如何做到这一点,我想知道的是,是否有一种方法可以编写一个脚本来运行查询并逐月提取一年的数据。这样,我就会启动脚本,每当脚本全部完成时,我就会有12个文本文件,每个月一个。
我可以手动完成,但这是大量的数据,我想让它一夜之间运行。这样做的原因是,如果不尝试一次导入所有这些数据,我们将使用的应用程序将运行得更快。我甚至不知道这是否可能,但如果是,有人能指出我的正确方向吗?
提前谢谢。
发布于 2014-08-07 18:37:05
首先编写参数化脚本:
define the_year=&1
define the_mon=&2
set lines etc
select * from the_table
where trunc(the_date , 'MM' ) = to_date ( '&the_year&the_mon', 'YYYYMM' )
spool extract_&the_year&the_mon.csv
/
spool off然后是包装脚本:
@the_script 2014 01
@the_script 2014 02
.
.
.
@the_script 2014 12您可以变得聪明(Ish)并生成包装器:
sppol the_wrapper.sql
select '@the_script ' || to_char ( ADD_MONTHS ( trunc(sysdate,'YYYY' ), rn-1 ), 'YYYY MM' )
from ( select rownum rn from dual connect by level < 13 );
spool off不要忘记使生成的脚本可运行的set选项(例如,set验证关闭、set反馈关闭等)。
发布于 2014-08-07 14:42:06
学习SQL*Plus,这是管理Oracle的一个非常强大的工具,如果您开始搜索如何从表中提取数据到*.cvs文件,您就可以立即找到this question。
如果您给我一个脚本来创建一个表并填充它,我将向您演示如何从您的表中提取数据。
https://stackoverflow.com/questions/25184216
复制相似问题