我需要从数据库中提取大量数据(比如整数1到1亿行)到多个平面文件。数据可能来自多个表,我们必须限制所选列以避免提取敏感信息。
我们的源数据库可以是Oracle,MS SQL Server或DB2。任何源数据库下的表名都是相同的。我正在寻找适用于所有类型的解决方案。
另一个要求是占用空间最小,因此我们无法安装大型ETL工具。
我正在考虑创建一个java程序,它将通过JDBC连接以从DB读取数据并写入文件。我的考虑应该是什么?我认为一个是表演。我正在考虑批处理文件写入以减少I / O操作。是否有一个实用程序可以跨这些数据库工作以选择性地提取数据我需要考虑的任何建议和其他问题?
答案 0 :(得分:1)
在我看来,Java是正确的工具。你没有告诉我们你想在哪个硬件平台上运行它,但是将它安装在windows,linux,mac os,solaris,aix上并不是什么大麻烦......无论你需要什么。如果你将pure-java数据库驱动程序与jar捆绑在一起,你几乎可以在任何地方使用该程序,甚至不需要安装一些数据库客户端(好吧,我不确定mysql是否有一个纯java驱动程序,但是oracle和db2做)。在CPU使用方面,Java可能比其他实现更昂贵,特别是如果你使用的是纯Java客户端,但限制因素仍然是磁盘/网络IO,而不是CPU。
之前我在Perl和C中做过类似的事情,在新系统上安装我的软件总是一种PITA,因为你需要先安装客户端软件,而在perl的情况下,你几乎肯定需要编译器也可以编译DBD :: Oracle和DBD :: DB2。使用我的通用jar,它只是一个“复制一个包含目标类型4驱动程序的jar文件,确保已安装java,现在已完成。”