首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将大型CSV文件加载到Oracle表的技术选择

将大型CSV文件加载到Oracle表的技术选择
EN

Stack Overflow用户
提问于 2012-10-25 04:54:52
回答 3查看 2K关注 0票数 3

我遇到了一个问题,我不知道哪一种技术最适合实施。如果你们能根据你们的经验给我一些建议,我将不胜感激。我想从10-15个CSV文件中加载数据,每个文件都是相当大的5-10 GBs。在加载数据时,我的意思是将CSV文件转换为XML,然后使用这个XML在Oracle中填充大约6-7个阶段表。需要填充数据,以便XML元素以及表中的行最终来自多个CSV文件。例如,元素A将有来自CSV文件1、文件2和文件3等的数据的子元素。

我有一个建立在Apache之上的框架,在Linux上的Jboss。Oracle 10G是数据库服务器。我正在考虑的选择,

  1. Smooks --但是问题是,Smooks一次序列化一个CSV,在读取其他CSV文件之前,我不能一直保存这些半生不熟的java,因为考虑到我需要创建和保存的bean的数量,我可能会耗尽内存,然后才能将它们完全填充为XML。
  2. SQLLoader --我可以跳过XML,并使用SQLLoader直接将CSV加载到暂存表中。但我不确定是否可以a.将same中的多个CSV文件加载到相同的表中,在第一个文件之后更新记录。在加载暂存表时应用一些翻译规则。
  3. Python脚本将CSV转换为XML。
  4. SQLLoader加载与CSV数据对应的一组不同的暂存表,然后编写存储过程,从这组新的暂存表加载实际的暂存表(考虑到对现有框架所需的更改量,这是我希望避免的路径)。

提前谢谢。如果有人能给我指明正确的方向,或者从他/她的个人经历中给我一些深刻的见解,这将帮助我做出明智的决定。

你好,-v-

PS: CSV文件相当简单,每个列大约有40列。对象的深度或文件之间的关系将在2到3之间。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-25 06:22:19

除非您可以使用一些成熟的ETL工具(例如Informatica PowerCenter、宾得荷数据集成),否则我建议第四种解决方案--它很简单,性能应该很好,因为甲骨文将处理任务中最复杂的部分。

票数 2
EN

Stack Overflow用户

发布于 2013-01-12 21:56:34

在Informatica PowerCenter中,您可以导入/导出XML的+5GB。作为马立克的回应,试一试,因为它工作得相当快。如果您不熟悉这个工具,那么这里是一个简短的介绍。

票数 2
EN

Stack Overflow用户

发布于 2013-01-21 23:24:41

创建一个进程/脚本,它将调用一个过程将csv文件加载到外部Oracle表,并创建另一个脚本将其加载到目标表。

您还可以添加cron作业来调用这些脚本,这些脚本将跟踪传入的csv文件到目录中,处理它并将csv文件移动到输出/处理文件夹。

异常也可以通过记录或发送电子邮件来相应处理。祝好运。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13061800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档