首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >装载到oracle中的备选方案

装载到oracle中的备选方案
EN

Stack Overflow用户
提问于 2009-07-06 23:30:20
回答 4查看 3.8K关注 0票数 2

我正在考虑将大量数据加载到我的oracle数据库中。

传入的数据类似于CSV,可以通过一些解析将其转换为CSV。

在加载过程中,可能会拒绝某些行,但我不希望其他插入回滚。

我正在考虑下列办法之一:

  1. 使用sqlloader
  2. 使用外部表
  3. 使用存储过程

有人能为我指出每一种方法的优缺点,并提出其他我应该考虑的选择吗?

谢谢。

编辑:

对不起,应该澄清2。我打算创建一个外部表,然后选择到数据库中。我的理解是,对于大量类似CSV的数据,这是一种很好的方法吗?

EN

回答 4

Stack Overflow用户

发布于 2013-04-30 21:14:23

我使用SQL*Loader而不是外部表的唯一原因是:

  1. 如果无法从服务器访问数据文件(例如,使用预处理脚本从ftp站点获取数据文件)
  2. 如果外部表有阻止它的限制(例如,无法加载流格式化文件)。

外部表更容易使用,更灵活(在加载、合并、预处理脚本等过程中,多表插入、连接和/或聚合),只是有了更好的体验。并行DML也比SQL*Loader简单得多。

票数 2
EN

Stack Overflow用户

发布于 2009-07-07 04:58:37

为此,我编写了Perl脚本,并使用了SQLldr。

我想说的是,如果您能够访问机器本身,并且您没有复杂的CSV (CSV可能是一个痛苦),那么使用sqlldr。花时间处理控制文件是值得的,因为它速度快,并且一定会出现在您遇到的每个Oracle框上。

票数 1
EN

Stack Overflow用户

发布于 2009-07-07 17:24:14

这实际上取决于您在Oracle中使用数据后要做什么。如果您要频繁地查询它,那么使用sql加载程序将更有效。通过将数据导入普通Oracle表,您可以添加索引、主键等。另外,由于数据是由Oracle管理的,所以性能可能会更好,因为数据被组织成一个更严格定义的结构。

当您不频繁地在一组外部数据上查询数据时,外部表是非常方便的。它省去了复制存储(文件和oracle表空间)和/或等待sqlloader完成批处理作业的麻烦。但是,我通常会将它们用于完整的表读取,因为Oracle无法找到特定的行。

简单回答:如果您使用"where“子句查询此表,请使用sqlloader创建一个表。如果没有,尝试这两种方法并评估性能。

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

https://stackoverflow.com/questions/1089674

复制
相关文章

相似问题

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