【问题标题】:Cross-platform Extract of Large Volume of data from databases to file [closed]从数据库到文件的大量数据的跨平台提取[关闭]
【发布时间】:2014-01-13 10:27:45
【问题描述】:

我需要从数据库中提取大量数据(比如总共 1 到 1 亿行)到多个平面文件中。数据可能来自多个表,我们必须限制选择的列以避免提取敏感信息。

我们的源数据库可以是 Oracle、MS SQL Server 或 DB2。任何源数据库下的表名都相同。我正在寻找一种适用于所有类型的解决方案。

另一个要求是占用空间最小,因此我们不能安装大型 ETL 工具。

我正在考虑创建一个通过 JDBC 连接以从数据库读取数据并写入文件的 java 程序。我应该考虑什么?我认为一个是性能。我正在考虑批量写入文件以减少 I/O 操作。是否有适用于这些数据库的实用程序来选择性地提取数据?有什么建议和其他我需要考虑的问题吗?

【问题讨论】:

  • 我在这里没有看到具体问题。您查询数据库并将行流式传输到具有适当缓冲区大小的文件(如您所说)。没关系。 Stack Overflow 不太适合“这是一个可行的解决方案,我可以改进什么?”形式的问题。
  • 我明白了。我正在寻找验证,因为我觉得我遗漏了一些东西或者可能忽略了更好的解决方案。感谢您的确认。

标签: sql-server database oracle db2 extract


【解决方案1】:

在我看来,Java 是正确的工具。你没有告诉我们你想在哪个硬件平台上运行它,但是把它安装在 windows、linux、mac os、solaris、aix 上都不是什么大问题。无论你需要什么。如果您将纯 java 数据库驱动程序与您的 jar 捆绑在一起,您可以让程序几乎在任何地方都可以工作,甚至不需要安装一些数据库客户端(好吧,我不确定 mysql 是否有纯 java 驱动程序,但是 oracle 和 db2做)。 Java 在 CPU 使用方面可能比其他实现更昂贵,特别是如果您使用纯 Java 客户端,但无论如何限制因素将是磁盘/网络 IO,而不是 CPU。

我以前在 Perl 和 C 中做过类似的事情,在新系统上安装我的软件总是一种 PITA,因为你需要先安装客户端软件,而对于 perl,你几乎肯定需要一个编译器来编译 DBD::Oracle 和 DBD::DB2。使用我的通用 jar,它现在只是“将一个包含类型 4 驱动程序的 jar 文件复制到目标,确保安装了 java,并且完成了”。

【讨论】:

  • 硬件平台可以是 x86-64、Itanium 或 SPARC。我的具体要求是对 PeopleSoft 数据库执行提取。在这里,他们的服务器上预装了 java。
猜你喜欢
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 2018-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-30
相关资源
最近更新 更多