一尘不染

将大量数据加载到Oracle SQL数据库

sql

我想知道是否有人对我即将从事的工作有任何经验。我有几个csv文件,它们的大小都在一个GB左右,我需要将它们加载到oracle数据库中。虽然加载后我的大部分工作都是只读的,但我仍需要不时加载更新。基本上,我只需要一个很好的工具即可一次将多行数据加载到数据库中。

到目前为止,这是我发现的内容:

  1. 我可以使用SQL Loader来完成很多工作

  2. 我可以使用批量插入命令

  3. 某种批量插入。

以某种方式使用准备好的语句可能是一个好主意。我想我想知道每个人都认为是完成此插入操作的最快方法。有小费吗?


阅读 157

收藏
2021-03-08

共1个答案

一尘不染

如果您可以推出自己的实用程序,而该实用程序的性能将超过SQL * Loader直接路径加载,我将感到非常惊讶。Oracle正是出于这个目的而构建了该实用程序-
构建更高效的程序的可能性实际上为零。还有一个Parallel Direct Path
Load
,它使您可以同时运行多个直接路径加载过程。

从手册中:

直接路径加载不是使用SQL
INSERT语句填充绑定数组缓冲区并将其传递到Oracle数据库,而是使用直接路径API将要加载的数据传递到服务器中的加载引擎。加载引擎根据传递给它的数据构建一个列数组结构。

直接路径加载引擎使用列数组结构来格式化Oracle数据块并构建索引键。新格式化的数据库块直接写到数据库中(如果主机平台支持异步I /
O,则每个异步请求使用异步写入来处理多个块)。

在内部,多个缓冲区用于格式化块。在填充一个缓冲区时,如果主机平台上有异步I / O,则将写入一个或多个缓冲区。使用I /
O进行重叠计算可以提高负载性能。

在某些情况下,无法使用直接路径加载。

2021-03-08