我通过SQL Developer连接到Oracle数据库,我想编写一个返回每月数据集的查询,然后将该数据提取到分隔的文本文件中。我知道如何做到这一点就好了,我想知道的是,是否有办法编写脚本来运行查询并逐月提取数据一年。这样我就可以启动脚本,无论什么时候完成,我都会有12个文本文件,每个月一个。
我可以手动完成,但它有很多数据,我想让它在一夜之间运行。这样做的原因是,如果我们不尝试一次性导入所有数据,那么我们将使用数据的应用程序将运行得更快。我甚至不知道是否可能,但如果有的话,有人能指出我正确的方向吗?
提前致谢。
答案 0 :(得分:0)
学习SQL * Plus,这是一个非常强大的管理Oracle数据库的工具,如果你开始搜索如何从表中提取数据到* .cvs文件,你会发现,例如,this question立即3} p>
如果您给我一个脚本来创建一个表并填写它,我将向您展示如何从表中提取数据的示例。
答案 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
不要忘记设置选项以使生成的脚本可运行(例如,设置验证关闭,设置反馈关闭等)。