我遇到了一个问题,不确定哪种技术最适合实施它。如果你们能根据你的经验给我一些建议,我将不胜感激。我想从 10-15 个 CSV 文件中加载数据,每个文件都是相当大的 5-10 GB。通过加载数据,我的意思是将 CSV 文件转换为 XML,然后使用该 XML 在 Oracle 中填充大约 6-7 个临时表。需要填充数据,以便 XML 的元素以及最终表格的行来自多个 CSV 文件。因此,例如元素 A 将具有来自 CSV 文件 1、文件 2 和文件 3 等数据的子元素。
我有一个建立在 Apache Camel 之上的框架,Linux 上的 Jboss。Oracle 10G 是数据库服务器。我正在考虑的选项,
- Smooks - 但是问题是 Smooks 一次序列化一个 CSV,我不能坚持半生不熟的 Java bean 直到读取其他 CSV 文件,因为考虑到 bean 的数量,我冒着内存不足的风险在将它们完全填充为 XML 写入磁盘之前,我需要创建并保留它们。
- SQLLoader - 我可以一起跳过 XML 创建并使用 SQLLoader 将 CSV 直接加载到临时表。但我不确定我是否可以。将 SQL Loader 中的多个 CSV 文件加载到相同的表中,在第一个文件之后更新记录。湾。在加载临时表时应用一些翻译规则。
- 用于将 CSV 转换为 XML 的 Python 脚本。
- SQLLoader 加载与 CSV 数据相对应的一组不同的临时表,然后编写存储过程以从这组新的临时表中加载实际的临时表(考虑到对我现有框架的更改量,我想避免的路径它需要)。
提前致谢。如果有人能指出我正确的方向或从他/她的个人经历中给我一些见解,这将有助于我做出明智的决定。
问候,-v-
PS:CSV 文件相当简单,每个大约 40 列。对象的深度或文件之间的关系将在 2 到 3 左右。