繁体   English   中英

什么是更高效的INSERT命令或SQL Loader进行批量上传 - ORACLE 11g R2

[英]What is more efficient INSERT command or SQL Loader for bulk upload - ORACLE 11g R2

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

在表格中加载这些记录给我留下了两个选择

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

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

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

在占用数据库资源方面,上述两个选项中的哪一个最有效,在要执行此操作的客户端服务器上的利用率。

我确实知道记录的数量相当小,但我们可能不得不用更多的记录(接近60,000)重复这个活动,在这种情况下,我希望从一开始就配置最好的选项。

SQL*Loader是更有效的方法。 它为您提供更多控制。 你有一个选项do DIRECT load和NOLOGGING ,这将减少重做日志的生成,并且当索引被禁用时(作为直接加载的一部分),加载会更快。 缺点是,如果负载中断,索引将unusable

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

SQL * Loader比数千个单独的INSERT语句更有效。 但是,即使有60,000行,这两种方法都应该在几秒钟内完成。

在您提到的两个选项中,SQL * Loader绝对是最佳选择 - 更快,更高效。

但是,我会选择另一种方法 - 外部表格 拥有SQL * Loader的所有好处,并允许您将外部csv文件视为普通数据库表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM