我通过 SQL Developer 连接到 Oracle 数据库,我想编写一个返回每月数据集的查询,然后将该数据提取到分隔文本文件中。我知道如何做到这一点就好了,我想知道是否有一种方法可以编写一个脚本来运行查询并在一年内逐月提取数据。这样我就可以启动脚本,每当脚本全部完成时,我就会有 12 个文本文件,每个月一个。
我可以手动完成,但数据量很大,我想让它运行一夜。这样做的原因是,如果我们不尝试立即导入所有数据,我们将使用数据的应用程序会运行得更快。我什至不知道是否可能,但如果可以,有人可以指出我正确的方向吗?
提前致谢。
最佳答案
首先编写参数化脚本:
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
不要忘记使生成的脚本可运行的设置选项(例如设置验证关闭、设置反馈关闭等)。
关于sql - 自动提取数据 - Oracle SQL Developer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25184216/