用于批量上传的 INSERT 命令或 SQL Loader 哪个更有效 - ORACLE 11g R2

Ven*_*uza 5 sql oracle oracle11gr2 sql-loader

作为新流程要求的一部分,我们将创建包含大约 3000 - 4000 条记录的表。我们在 txt 文件中有这些记录的纯文本副本。

在表中加载这些记录让我有两个选择

  1. 使用 shell 脚本为这些记录生成包含 INSERT 语句的 SQL 文件

    • 通过使用awk、shell变量和循环来创建一个sql和这个sql的脚本执行,我们可以轻松的执行
  2. SQL 加载器的使用。

    • 记录列表的重新排列和 ctl 文件生成的唯一依赖项。

就占用 DB 资源、在要执行此操作的客户端服务器上的利用率而言,以上两个选项中的哪一个最有效。

我确实意识到记录的数量相当少,但我们可能必须用更多的记录(接近 60,000)重复此活动,在这种情况下,我希望从一开始就配置最佳选项。

Mah*_*kar 5

SQL*Loader是更有效的方法。它为您提供更多控制权。您有一个选项 do DIRECTload and NOLOGGING,这将减少重做日志的生成,并且当索引被禁用(作为直接加载的一部分)时,加载速度会更快。不利的一面是,如果负载中断,则保留索引unusable

但是,考虑到优点,SQL*Loader是最好的方法。当您拥有数百万条记录并同时运行如此多的加载作业时,您会感受到不同。我听到 DBA 抱怨日志大小,当我们执行CONVENTIONAL INSERT语句加载时,有 200 多个这样的作业并行运行。数据量越大,您将看到的性能差异越大。