最佳/最快的方法将Clob数据从csv文件插入到oracle数据库

时间:2011-02-10 18:39:31

标签: c# oracle file clob

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

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

当clob数据存在时,可能会出现一些并发症。

谢谢,Naveen

3 个答案:

答案 0 :(得分:3)

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

SQL * Loader控件文件的细节取决于文件的格式,但文档中有loading CLOB data stored in a data file的示例,可以帮助您入门。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

尽量减少瓶颈。

  • 移动文件,以便在一个很好的粗管道上直接访问DB服务器。
  • 您希望RAID 10(不是RAID 5)用于数据库数据文件。
  • 确保重做日志文件与数据文件位于不同的主轴上。你不希望他们在磁盘上战斗。 可能要为此关闭重做日志文件的任何多路复用。您(可能)不希望将其作为生产数据库的永久固定装置,但如果这是一次性工作,则值得这样做。
  • 关闭存档日志模式可能是值得的,因为可能会禁用任何复制。同样,如果这是一次性的话,可能只是相关的。

一旦你的硬件适应了大量的写入负载,那就使用SQL * Loader / external tables。

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