我在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;
1条答案
按热度按时间50few1ms1#
方法如下:为了避免显示
select
在后台文件中,您需要但不能直接在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
SQL>