假脱机多个文件

Posted

技术标签:

【中文标题】假脱机多个文件【英文标题】:Spooling multiple files 【发布时间】:2010-11-10 19:51:38 【问题描述】:

我有一份报告,我需要为 n 个供应商导出到 csv 文件。我有一种感觉,我需要多次运行它,所以我想尽可能地自动化它。我为一个供应商编写了所需的 sql plus,我想知道如何编写脚本来为每个供应商运行。我将供应商列表存储在数据库的表中,但知道我不能将假脱机放在 pl/sql 块中,我想知道如何循环遍历每个供应商来创建他们的文件。

【问题讨论】:

【参考方案1】:

我通过让一个脚本生成辅助脚本然后执行该脚本来完成类似的事情。近似示例:

set serveroutput on
set termout off
spool temp_script.sql
Begin
    for r in (select * from vendors) loop
        dbms_output.put_line('spool '||r.vendor_name||'.csv');
        dbms_output.put_line('data is: '||r.data);
        /*feel free to put other output commands here */
        dbms_output.put_line('spool off');
    end loop;
end;
spool off
@temp_script.sql

【讨论】:

您可能需要将供应商名称中出现的任何空格替换为下划线(例如REPLACE(r.vendor_name,' ','_'))。

以上是关于假脱机多个文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在一个循环中假脱机到多个文件?

假脱机输出查询中涉及的多个表

SQL*Plus 中带有多个参数的假脱机输出

水槽的 Spool Dir 可以在远程机器上吗?

从假脱机文件中删除 sql

SQLPlus 假脱机追加