gpt4 book ai didi

Oracle 11gR2加载多个文件: sqlldr or external tables?

转载 作者:行者123 更新时间:2023-12-02 08:23:19 25 4
gpt4 key购买 nike

我有 471 个文件,总计约 100GB。这些文件以“\t”分隔,交易数据采用以下格式:

char(10) not null,
char(8) not null,
char(1) not null,
char(4) not null,
number not null,
char(1) not null,
char(1) not null,
char(1) not null,
number not null

文件中事务的顺序很重要,需要保留,最好带有主键 ID。最初,我使用 sqlldr 加载这些文件,但需要很长时间。我最近了解了外部表。从战略角度来看,哪种方法更好?外部表如何工作?谢谢。

最佳答案

外部表和SQL*Loader的记录解析非常相似,所以通常在相同的记录格式下,没有重大的性能差异。然而,外部表可能更适合以下情况:

  • 您希望在数据加载到数据库时对其进行转换。
  • 您想要加载数据,并且需要为临时表建立额外的索引。
  • 您希望使用透明并行处理,而不必先拆分外部数据。

但是,在以下情况下,请使用 SQL*Loader 以获得最佳加载性能:

  • 您想要远程加载数据。
  • 不需要对数据进行转换,也不需要并行加载数据。

为了提高 SQL*Loader 的性能,提出了以下建议。

  • 负载上没有任何索引和/或约束(主键)加载过程中的表
  • 在命令行中添加以下选项:DIRECT=TRUE。这会使用直接路径加载器绕过大部分 RDBMS 处理而不是传统的路径加载器。然而,也有一些情况当你不能使用直接负载时。这些限制可以从Oracle 服务器实用程序指南
  • 使用固定宽度数据而不是分隔数据。对于分隔数据,每个需要扫描记录的分隔符
  • 尽量避免字符集转换,因为转换既涉及时间又涉及 CPU强化
  • 对于常规路径,请使用 READSIZE 和 BINDSIZE 参数。
    READSIZE 将在每次读取系统调用时获取更大的数据 block 。这BINDSIZE 参数指定绑定(bind)数组的大小,而该大小又指定每批将加载的行数

来源:http://download.oracle.com/otndocs/products/database/enterprise_edition/utilities/pdf/sql_loader_faq.pdf

关于Oracle 11gR2加载多个文件: sqlldr or external tables?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8694089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com