0

我有一个用于数据库导入的 Java 实用程序。我希望能够在 oracle 上使用 sqlldr 来提高性能。我可以创建controlanddata文件,但这似乎不是 The Right Thing™ 要做的事情。我应该能够通过INFILE "-"在控制文件(q1 - how? echo <data...>? 以前从未使用过Java)。我看不到如何流式传输控制文件本身(q2 - 还是我遗漏了一些明显的东西?)。我可以使用命名管道,但我不知道如何在 Windows 中从 Java 实例化和使用它们(q3 - 这会工作以及如何工作?)。

<moan>为什么预言机必须如此复杂?这在mysql中是微不足道的......<moan>

4

2 回答 2

2

“为什么 oracle 必须这么复杂?在 mysql 中是微不足道的”

您必须记住的是,Oracle 是一个古老的产品。SQL Loader 作为一个实用程序必须有二十年的历史,也许更久。所以自然比一些更新的工具更难使用。

这就是为什么您应该停止尝试将 SQL Loader 安装到您新奇的 Java 应用程序中的原因 :-) 改为查看外部表。因为这些是数据库对象,我们可以对它们使用 SQL SELECT,因此使用它们自动化加载过程会更容易。我在回答另一个问题时写了更多关于外部表的内容。 一探究竟。

于 2011-05-19T12:45:12.200 回答
0

从根本上说,SQLLDR 是关于从一个或多个文件中获取数据到数据库表中。它在这个角色中非常强大,尤其是在处理多个文件或来自单个文件的并行加载时(它可以有多个线程/进程同时从同一个文件中读取)。

并非所有这些都适合从非真实文件中读取。如果您的数据流来自 Web 服务,那么我会使用 UTL_HTTP 提取它。如果它来自 FTP,那么我会将 FTP 作为 CLOB/BLOB 直接导入数据库并从那里处理它。

根据您的版本,还要查看外部表的预处理器功能

于 2011-05-19T23:49:56.870 回答