繁体   English   中英

在 Oracle SQL 运行期间将系统日期添加到文件名

[英]Add System Date to file name during Oracle SQL Run

我在 SQL 开发人员(oracle)中运行以下代码来运行查询并将 csv 文件导出到文件夹中。 我也想将系统日期添加到文件名中。 我正在使用以下代码。 虽然它完成了这项工作,但它要求用户在弹出窗口 window 中输入日期。 我希望摆脱弹出 window ,而是让代码使用系统日期。 有什么办法可以消除用户输入 window?

第二个问题是,这也将 SQL 代码与查询结果一起引入到 output 文件中,有什么方法可以避免引入 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;

方法如下:为了避免在假脱机文件中显示select语句,您需要

set term off
set feed off

不是直接在 SQL*Plus(或 SQL Developer)中; 您必须将以下内容保存到 a.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 Developer 请求替换变量的值(这就是&something所代表的),运行set define off

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM