在oracle sql运行期间向文件名添加系统日期

ajsxfq5m  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(344)

我在sqldeveloper(oracle)中运行以下代码来运行查询并将csv文件导出到文件夹中。我想添加系统日期的文件名以及。我正在使用以下代码。尽管它完成了这项工作,但它要求用户在弹出窗口中输入日期。我希望摆脱弹出窗口,而不是让代码使用系统日期代替。有什么方法可以消除用户输入窗口吗?
第二个问题是,这也会将sql代码与查询结果一起引入输出文件,有没有办法避免也引入sql?

set VERIFY off 
set FEEDBACK off
set echo off 
set heading off
col date_stp new_value date_stp
Select to_char(sysdate,'yyyymmdd') date_stp from dual;

Spool 'I:\Folder\ExportData&date_stp..csv'; 
SET sqlformat csv;
Select Customer, ID, etc -- the content of the query

Spool off;
50few1ms

50few1ms1#

方法如下:为了避免显示 select 在后台文件中,您需要

set term off
set feed off

但不能直接在sql*plus(或sql developer)中使用;您必须将以下内容保存到.sql文件中,并使用 @ .
所以: p.sql ```
set term off
set feed off

col sd new_value x
select to_char(sysdate,'YYYYMMDD') sd from dual;

spool dept&x..txt
select * From dept;
spool off

测试:

SQL> @p --> call the .sql file
SQL> $dir *.txt
Volume in drive C is OSDisk
Volume Serial Number is 7635-F892

Directory of C:\Users\lf

12.06.2020. 21:13 494 dept20200612.txt --> file name is OK
1 File(s) 494 bytes
0 Dir(s) 260.040.732.672 bytes free

SQL> $type dept20200612.txt
--> no SELECT statement here
DEPTNO DNAME LOC


    10 ACCOUNTING     NEW YORK
    20 RESEARCH       DALLAS
    30 SALES          CHICAGO
    40 OPERATIONS     BOSTON

SQL>

为了阻止sql*plus或sql开发人员询问替换变量的值(这就是 `&something` 表示),运行 `set define off` .

相关问题