0

如何将包含 clob 字段的文件中的数据插入到 oracle 数据库。

从文件中读取。插入oracle数据库

当存在 clob 数据时,可能会涉及一些复杂情况。

谢谢,纳文

4

3 回答 3

3

我通常建议使用 SQL*Loader 或外部表,具体取决于文件是否(或可以)放在数据库服务器上,或者您是否打算从客户端计算机加载文件。

SQL*Loader 控制文件的细节取决于文件的格式,但文档中有加载存储在数据文件中的 CLOB 数据的示例,这些示例应该可以帮助您入门。

于 2011-02-10T19:00:33.817 回答
1

在为我的上一家公司做这件事时,我们使用存储过程和多线程编写了一个 C# 程序。上下限制线程有助于减轻数据库的负载。由于某些配置设置,我们无法使用 Loader。关联数组也有帮助。

在我们的例子中,我们无法进行一些优化,因为表是活动的,但是关闭索引并在加载后重建它们可以提高性能。我们在 RAC 环境中看到了问题,每个 rac 服务器争夺索引文件、分区和调整索引提高了性能,但我并不是真正的 Oracle 专家,所以你可能想问更聪明的人。

我确实知道我们看到 CLOB 数据的性能非常差,因此我们将其中一个字段更改为跨越多个 varchar(4000) 的压缩字符串,然后让程序在使用时将它们缝合在一起。

于 2011-02-10T20:22:48.910 回答
1

尽量减少瓶颈。

  • 移动文件,以便数据库服务器可以直接访问它们。
  • 您的数据库数据文件需要 RAID 10(而不是 RAID 5)。
  • 确保您的重做日志文件与数据文件位于不同的主轴上。你不希望他们争夺磁盘。您可能希望为此关闭任何重做日志文件的多路复用。您(可能)不希望将其作为生产数据库上的永久固定装置,但如果这是一次性工作,则值得这样做。
  • 关闭归档日志模式可能是值得的,因为可能禁用任何复制。同样,可能仅在这是一次性的情况下才相关。

一旦你的硬件准备好应对繁重的写入负载,然后使用 SQL*Loader / 外部表。

我怀疑多个线程/进程是否会有所帮助,因为我希望速度会受到写入磁盘而不是 CPU 的能力的限制。如果您可以将 LOB 分布到具有多个轴上的文件的表空间中,那可能会有所帮助。

于 2011-02-10T22:26:53.630 回答