我目前有一个每日进程,使用调用sql_loader的shell脚本将大量数据从TXT文件加载到ORACLE数据库中.我想将它迁移到.NET服务,但不想依赖从我的服务执行sql_loader.
实现这一目标的最佳(最快)方法是什么?
将数据加载到DataTable中,并使用OracleBulkCopy类(来自.NET的Oracle数据提供程序)一次将其全部加载到数据库中。仅当您仅将数据插入数据库中,而不能使用OracleBulkCopy进行更新时,这才起作用。
我假设你不喜欢SQL Loader因为它的命令行界面,以及(有些)笨重的控制文件.但这不是使用"SQL Loader" 的唯一方法
Oracle现在有一种称为外部表的东西.你可以在这里看到一个例子.
简单地说,您将文件放入目录(定义文件系统目录的数据库对象),定义表参数等...只需查看示例.现在突然间你的flatfile看起来像是Oracle的一个表.
执行"INSERT INTO perm_Table SELECT*FROM external_table".
所以现在你的.net应用程序只是将文件重命名为外部表指向的文件,然后执行INSERT,然后重新命名文件.
瞧.
您已加载数据.这一切都使用SQL完成,比ADO或任何其他可以访问的库快得多.没有更笨重的命令行界面.