Oracle SQL Developer可以选择将查询结果的内容导出为各种格式(CSV /固定宽度/ Excel / XML)。有没有办法让它自动化?
如果没有,有哪些免费工具可以让我自动导出为SQL Developer能够导出的相同格式?
答案 0 :(得分: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执行类似的操作(此示例直接来自文档)。
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;
/
然后,您可以使用result
将UTL_FILE
CLOB写入文件,并再次使用您最喜欢的调度程序来安排它。
如果您只需要生成Excel可以打开的文件,您可能只需要创建CSV或制表符分隔文件。 Excel可以相对容易地打开任何类型的文件,尽管您确实得到了提示接受它找到的分隔符的额外步骤(它通常会正确检测分隔符)。
生成本机Excel输出更具挑战性。有PL / SQL API用于生成Jason Bennett's ExcelDoctypeUtils等Excel文件。但我总是使用Java存储过程,使用JExcelAPI或Apache POI来生成Excel文件。显然,这需要更多的工作来实现。一旦有了可以编写Excel文件的存储过程,就像使用其他选项一样,您可以使用自己喜欢的调度程序自动调用该过程。
答案 1 :(得分:2)
SQL Workbench有一个非常强大的命令行export工具,它是非特定于数据库的