首页 文章

Oracle - 自动导出/卸载数据

提问于
浏览
2

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

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

2 回答

  • 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;
    /
    

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

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

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

  • 2

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

相关问题