我想在SQLPlus中执行此操作:在其名称中定义包含今天日期的文件,并将SQL语句的输出假脱机到该文件。我知道如何将SQL语句的输出假脱机到文件。只是不知道如何将文件名声明为包含今天日期的变量。
例如,从ERROR表中选择具有今天时间戳的所有行,并将结果输出到名为TODAYS_ERRORS_YYYYMMDD.log
的文件。
我正在使用调用SQL plus的BAT文件,如下所示:
sqlplus -silent user/password@errorDB @c:\temp\error_query.sql
我能够运行上面的bat文件并将行成功输出到具有静态文件名的文件,例如TODAYS_ERRORS.log
。只是不知道如何声明文件名,以便它在名称中包含今天的日期。
这就是我的error_query.sql
文件现在的样子:
set feedback off;
set echo off;
spool c:\temp\TODAYS_ERRORS.log
SELECT created_time AS "Created Time",
error_severity AS "Severity",
error_desc AS "Error Text"
FROM ERROR
WHERE
to_date(to_char(created_time,'YYYYMMDD') = to_date(to_char(sysdate,'YYYYMMDD');
spool off;
exit;
答案 0 :(得分:1)
具有动态文件名的SPOOL http://www.lazydba.com/oracle/0__57310.html
此外,可以编写DOS命令来获取日期 搜索时的第一个链接:DOS +批处理+日期 - > http://www.robvanderwoude.com/datetime.php
答案 1 :(得分:0)
您可以为假脱机文件创建动态名称,如下所示:
col datum new_value today
select to_char(sysdate,'YYYYMMDD') as datum from dual;
set heading off
set linesize 128
set echo off
set feedback off
spool today_&today..log
rem Your query here ...
select ...
/
spool off