什么是最快的方式将数据加载到ORACLE数据库。净?
-
21-08-2019 - |
题
我现在有一个日常的过程,载荷的大量数据从一个TXT文件到ORACLE数据库,使用一个脚本,呼吁sql_loader.我希望迁移到一个.网服务,但不希望依赖执行sql_loader从我的服务。
什么是最好的(和最快的)的方式完成吗?
解决方案
我以为你不喜欢SQL的装载机,因为它的命令行界面,以及(有点)笨重的控制文件。但是,这并不是使用的唯一途径“SQL 的装载机”
甲骨文现在有一些所谓的外部表。你可以看到一个例子 rel="noreferrer">。
简单地说,你把一个文件到一个目录(一数据库对象,它定义文件系统目录),定义表参数等..只看该示例。现在所有的突然你的平面文件看起来像一个表到Oracle。
在你执行 “INSERT INTO perm_Table SELECT * FROM external_table”。
所以,现在你的.NET应用程序只是重命名文件将任何外部表指向,然后执行插入,然后重命名该文件回来。
瞧。
您已加载数据。这一切都与SQL完成,比ADO或任何其他库,你可以得到更快的很多很多。没有更多的笨重的命令行界面。
其他提示
将数据加载到一个DataTable,并使用 OracleBulkCopy 类(从.NET 中 Oracle数据提供者)加载它到数据库的一次。这只会工作,如果你只是将数据插入到数据库中,你不能做OracleBulkCopy更新。
SQL Server的ADO.Net提供商支持SqlBulkCopy的功能模仿SQL Server的BCP。
我不知道关于Oracle提供什么,但我会开始寻找,看看是否能提供支持的类似功能的sql_loader。
我想看看第三方dotConnect库从DevArt (原岩心研究)。虽然我没有用他们的 OracleLoader 部件具体而言,我使用他们的连接,命令,DataReader和DataAdapter的每日对象,并已发现它们是非常快的确实
希望帮助:O)
如果您有SSIS可用,这将是一个很好的工具。在.NET侧,我建议使用上述的Oracle类,但SSIS或任何ETL工具将是一个较好的选择。
实际上我解决我自己的问题采用一种替代方法:我写了一个存储程序负荷的数据和使用的 UTL_FILE 包。我不知道如果这是最快的方法,但它是相当快的,非常灵活的(我可以操纵的文本数据,因为我希望,同时装载)。
感谢所有答复,我只是公布这一备选人具有相同的问题,我有。