sql - 自动提取数据 - Oracle SQL Developer

标签 sql oracle oracle-sqldeveloper

我通过 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/

相关文章:

sql - MySQL连接三张表并求平均值

sql - 如何使用正则表达式作为 CSV 分隔符创建将 CSV 值转换为表格的函数?

oracle-sqldeveloper - 从 SQLDeveloper 导出 NUMBER - 逗号而不是点

sql - ORA-00917 在 sql 查询中转义撇号

sql - Oracle SQL Developer - 如何删除生成的 DDL 中的双引号

sql - 使用存储过程访问数据

sql - 检测时间序列中的趋势

oracle - 从Hive访问Oracle NoSQL

java - 部分匹配的可能解决方案(n 个字段中至少有 p 个匹配)

python - 在 django sql 查询中转义 % 会导致列表超出范围