自动提取数据 - Oracle SQL Developer

时间:2014-08-07 13:44:47

标签: sql oracle oracle-sqldeveloper

我通过SQL Developer连接到Oracle数据库,我想编写一个返回每月数据集的查询,然后将该数据提取到分隔的文本文件中。我知道如何做到这一点就好了,我想知道的是,是否有办法编写脚本来运行查询并逐月提取数据一年。这样我就可以启动脚本,无论什么时候完成,我都会有12个文本文件,每个月一个。

我可以手动完成,但它有很多数据,我想让它在一夜之间运行。这样做的原因是,如果我们不尝试一次性导入所有数据,那么我们将使用数据的应用程序将运行得更快。我甚至不知道是否可能,但如果有的话,有人能指出我正确的方向吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

学习SQL * Plus,这是一个非常强大的管理Oracle数据库的工具,如果你开始搜索如何从表中提取数据到* .cvs文件,你会发现,例如,this question立即

如果您给我一个脚本来创建一个表并填写它,我将向您展示如何从表中提取数据的示例。

答案 1 :(得分:0)

首先编写参数化脚本:

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

不要忘记设置选项以使生成的脚本可运行(例如,设置验证关闭,设置反馈关闭等)。