Oracle sqlplus和spool选项
我有一个运行SQL*Plus命令的批处理脚本,我正在将输出假脱机到CSV文件。所有输出只有一列“计数”。有没有办法在结果中添加文本Oracle sqlplus和spool选项,oracle,sqlplus,spool,Oracle,Sqlplus,Spool,我有一个运行SQL*Plus命令的批处理脚本,我正在将输出假脱机到CSV文件。所有输出只有一列“计数”。有没有办法在结果中添加文本 "The_current_valueOf Query1" "Count1" "The_current_valueOf Query2" "Count2" 如有任何帮助/建议,将不胜感激 set colsep, 将页面大小设置为0 打开阀芯 顶起 设置新页无 假脱机D:\TRHMIBS\TRH\TRHStats.csv 从host.ufm中选择count(*),其中插
"The_current_valueOf Query1" "Count1"
"The_current_valueOf Query2" "Count2"
如有任何帮助/建议,将不胜感激
set colsep,
将页面大小设置为0
打开阀芯
顶起
设置新页无
假脱机D:\TRHMIBS\TRH\TRHStats.csv
从host.ufm中选择count(*),其中插入trunc(sysdate)和sysdate之间的时间
/
假脱机D:\TRHMIBS\TRH\TRHStats.csv追加
从host.amendment中选择count(*),其中插入trunc(sysdate)和sysdate之间的\u时间,消息来源='AUDIT'
/
假脱机D:\TRHMIBS\TRH\TRHStats.csv追加
从host.ufm_amendment中选择count(*),其中trunc(sysdate)和sysdate之间的insert_time和msg_source='DAS'和ext_令牌为空
/
关闭;
出口
您可以选择消息作为硬编码文本。例如:
spool D:\TRHMIBS\TRH\TRHStats.csv
SELECT 'The_current_valueOf Query1:', COUNT(*)
FROM host.ufm
WHERE insert_time BETWEEN TRUNC(sysdate) AND sysdate
/
这与假脱机无关。您的第二个和第三个
spool
命令是多余的-所有内容都将假脱机到打开的文件,直到您将其关闭。但这是一个次要问题
可以使用列表达式(可以是字符串文字)向输出中添加另一列。因此,您可以将第一个查询更改为:
select 'The_current_valueOf Query1', count(*)
from host.ufm
where insert_time between trunc(sysdate) and sysdate
然后对其他两个查询执行相同的操作
由于您希望将其作为CSV,因此可以将colsep
单独保留,并在其中嵌入一个带有逗号的列,这可以通过连接实现:
select 'The_current_valueOf Query1,' || count(*)
from host.ufm
where insert_time between trunc(sysdate) and sysdate
您可以将它们合并在一起,而不是运行三个单独的查询;不节省处理时间,但意味着所有输出都集中在一起
select 'The_current_valueOf Query1,' || count(*)
from host.ufm
where insert_time between trunc(sysdate) and sysdate
union all
select 'The_current_valueOf Query1,' || count(*)
from host.amendment
where insert_time between trunc(sysdate) and sysdate
union all
...