Oracle - 自动导出/卸载数据

时间:2011-06-30 16:40:05

标签: xml oracle export oracle-sqldeveloper

Oracle SQL Developer可以选择将查询结果的内容导出为各种格式(CSV /固定宽度/ Excel / XML)。有没有办法让它自动化?

如果没有,有哪些免费工具可以让我自动导出为SQL Developer能够导出的相同格式?

2 个答案:

答案 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;
/

然后,您可以使用resultUTL_FILE CLOB写入文件,并再次使用您最喜欢的调度程序来安排它。

如果您只需要生成Excel可以打开的文件,您可能只需要创建CSV或制表符分隔文件。 Excel可以相对容易地打开任何类型的文件,尽管您确实得到了提示接受它找到的分隔符的额外步骤(它通常会正确检测分隔符)。

生成本机Excel输出更具挑战性。有PL / SQL API用于生成Jason Bennett's ExcelDoctypeUtils等Excel文件。但我总是使用Java存储过程,使用JExcelAPIApache POI来生成Excel文件。显然,这需要更多的工作来实现。一旦有了可以编写Excel文件的存储过程,就像使用其他选项一样,您可以使用自己喜欢的调度程序自动调用该过程。

答案 1 :(得分:2)

SQL Workbench有一个非常强大的命令行export工具,它是非特定于数据库的