Oracle - 自动导出/卸载数据

发布于 2024-11-17 17:06:26 字数 135 浏览 3 评论 0原文

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

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

Oracle SQL Developer has an option to export the contents of a query result to various formats (CSV/fixed width/Excel/XML). Is there any way to automate it?

If not, what free tools are available that will let me automate exports into the same formats that SQL Developer is capable of exporting to?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

街角迷惘 2024-11-24 17:06:26

我不知道有什么方法可以自动执行 SQL Developer 导出,没有。

但是,从 PL/SQL 生成 CSV 和/或固定宽度文件(使用 UTL_FILE 包)非常容易。 Tom Kyte 有一个使用 PL 生成 CSV 或固定宽度文件的程序示例 /SQL 或 Pro*C。使用您最喜欢的调度程序都可以相对轻松地实现自动化。

XML 输出可以以大致相同的方式自动化,具体取决于您需要对实际生成的 XML 进行多少控制。如果您只需要有效的 XML 并且不关心该 XML 的格式,您可以使用 DBMS_XMLGEN 包(此示例直接来自文档)。

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结果 CLOB 写入文件,并再次使用您最喜欢的调度程序来调度它。

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

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

I don't know of a way to automate SQL Developer exports, no.

However, it's easy enough to generate CSV and/or fixed width files from PL/SQL (using the UTL_FILE package). Tom Kyte has an example of programs that generate CSV or fixed width files using either PL/SQL or Pro*C. Either can be relatively easily automated using your favorite scheduler.

XML outputs can be automated in much the same way depending on how much control you need over the XML that is actually generated. If you just need valid XML and don't care about the format of that XML, you can do something like this using the DBMS_XMLGEN package (this example is straight from the documentation).

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

You could then write the result CLOB to a file using UTL_FILE and, again, use your favorite scheduler to schedule it.

If you just need to generate a file that Excel can open, you probably just need to create a CSV or a tab-delimited file. Excel can open either type of file relatively easily though you do get the extra step of being prompted to accept the delimiter that it found (it generally detects the delimiter correctly).

Generating native Excel output is a bit more challenging. There are PL/SQL APIs for generating Excel files such as Jason Bennett's ExcelDoctypeUtils. But I've always gone with a Java stored procedure that used either the JExcelAPI or that Apache POI to generate the Excel file. This, obviously, requires a bit more work to implement. Once you have a stored procedure that can write an Excel file, as with the other options, you can automate calling that procedure using your favorite scheduler.

丑疤怪 2024-11-24 17:06:26

SQL Workbench 有一个非常强大的命令行 导出 工具,它是非数据库的具体的

SQL Workbench has a pretty powerful command line export tool which is non-database specific

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文