DECLARE
qryCtx DBMS_XMLGEN.ctxHandle;
result CLOB;
BEGIN
qryCtx := DBMS_XMLGEN.newContext('SELECT * FROM hr.employees');
-- Set the row header to be EMPLOYEE
DBMS_XMLGEN.setRowTag(qryCtx, 'EMPLOYEE');
-- Get the result
result := DBMS_XMLGEN.getXML(qryCtx);
INSERT INTO temp_clob_tab VALUES(result);
--Close context
DBMS_XMLGEN.closeContext(qryCtx);
END;
/
然后,您可以使用 UTL_FILE 将 result CLOB写入文件,并再次使用您喜欢的调度程序来安排它 .
2 回答
我不知道自动化SQL Developer导出的方法,没有 .
但是,从PL / SQL生成CSV和/或固定宽度文件很容易(使用
UTL_FILE
包) . Tom Kyte有一个使用PL / SQL或Pro * C的programs that generate CSV or fixed width files示例 . 使用您喜欢的调度程序可以相对容易地自动化 .XML输出可以大致相同的方式自动化,具体取决于您对实际生成的XML需要多少控制 . 如果您只需要有效的XML并且不关心该XML的格式,则可以使用DBMS_XMLGEN package执行类似的操作(此示例直接来自文档) .
然后,您可以使用
UTL_FILE
将result
CLOB写入文件,并再次使用您喜欢的调度程序来安排它 .如果您只需要生成Excel可以打开的文件,您可能只需要创建CSV或制表符分隔文件 . Excel可以相对容易地打开任一类型的文件,虽然您确实得到了提示接受它找到的分隔符的额外步骤(它通常会正确检测分隔符) .
生成本机Excel输出更具挑战性 . 有用于生成Excel文件的PL / SQL API,例如Jason Bennett's ExcelDoctypeUtils . 但我总是使用Java存储过程,使用JExcelAPI或Apache POI生成Excel文件 . 显然,这需要更多的工作来实现 . 一旦有了可以编写Excel文件的存储过程,就像使用其他选项一样,您可以使用自己喜欢的调度程序自动调用该过程 .
SQL Workbench有一个非常强大的命令行export工具,它不是特定于数据库的