【问题标题】:What is the fastest way to load data into a ORACLE database with .NET?使用 .NET 将数据加载到 ORACLE 数据库的最快方法是什么?
【发布时间】:2009-03-24 17:09:31
【问题描述】:

我目前有一个日常流程,使用调用 sql_loader 的 shell 脚本将大量数据从 TXT 文件加载到 ORACLE 数据库中。我想将它迁移到 .NET 服务,但不想依赖从我的服务执行 sql_loader。

实现这一目标的最佳(和最快)方法是什么?

【问题讨论】:

  • 在这里提出更多问题并在标签中包含 ORACLE,我会尽力为您成功。

标签: .net oracle text-files loader


【解决方案1】:

我假设您不喜欢 SQLLoader,因为它的命令行界面和(有些)笨重的控制文件。但这不是使用“SQLLoader”的唯一方法

Oracle 现在有一个叫做外部表的东西。你可以看一个例子here

简单地说,你将一个文件放入一个目录(一个定义文件系统目录的数据库对象),你定义表参数等等......看看这个例子。现在突然之间,您的平面文件看起来就像 Oracle 的一个表。

你执行“INSERT INTO perm_Table SELECT * FROM external_table”。

所以现在您的 .net 应用程序只需将文件重命名为外部表指向的任何内容,然后执行 INSERT,然后重命名文件。

瞧。

您已加载数据。这一切都是用 SQL 完成的,比 ADO 或您可以使用的任何其他库要快得多。不再有笨拙的命令行界面。

【讨论】:

    【解决方案2】:

    将数据加载到 DataTable 中,并使用 OracleBulkCopy 类(来自 Oracle Data Provider for .NET)一次将其全部加载到数据库中。这仅在您仅将数据插入数据库时​​才有效,您无法使用 OracleBulkCopy 进行更新。

    【讨论】:

      【解决方案3】:

      SQL Server 的 ADO.Net 提供程序支持模拟 SQL Server BCP 的 SqlBulkCopy 函数。

      我对 Oracle 提供程序一无所知,但我会开始查看该提供程序是否支持与 sql_loader 类似的功能。

      【讨论】:

        【解决方案4】:

        我会看看3rd party dotConnect libraries from DevArt(以前的CoreLab)。虽然我没有专门使用他们的OracleLoader 组件,但我每天都使用他们的connection、command、datareader 和dataadapter 对象,并且发现它们确实非常快。

        希望对您有所帮助:o)

        【讨论】:

          【解决方案5】:

          如果您有可用的 SSIS,那将是一个很好的工具。在 .NET 方面,我建议使用上面提到的 Oracle 类,但 SSIS 或任何 ETL 工具会是更好的选择。

          【讨论】:

            【解决方案6】:

            我实际上用另一种方法解决了我自己的问题:我编写了一个存储过程来加载数据并使用UTL_FILE 包。我不知道这是否是最快的方法,但它非常快速且非常灵活(我可以在加载时随意操作文本数据)。

            感谢所有回复,我刚刚发布此内容是为了向遇到同样问题的人提供另一种选择。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-01-28
              • 2011-01-24
              • 1970-01-01
              • 2011-06-16
              • 2015-05-07
              • 1970-01-01
              • 2010-09-12
              • 1970-01-01
              相关资源
              最近更新 更多