我使用bcp (sybase海量插入)插入数百万条记录,但我的公司正在迁移到甲骨文。
我不确定是否应该使用数组绑定或sql加载程序。我记忆中有很多数据。我可以1.用数据创建一个文本文件并使用sql-加载程序插入它,或者2.使用数组绑定库插入数据。我不知道哪一个更适合我的申请。两者之间有什么区别。对于某些应用来说,一个更好吗?
我应该用哪一个来代替bcp?
发布于 2014-07-01 17:28:55
SQL*Loader是bcp最直接的替代品。如果您有一个使用bcp的现有进程,那么移动到SQL*Loader可能是阻力最小的路径。
你说你已经有了内存中的数据。我假设这意味着数据在客户端机器上的内存中,而不是在数据库服务器上。考虑到这个起点,我通常倾向于使用直接路径负载,假设您使用的任何数据库访问API都提供了一个直接路径API。将一堆数据写入文件的开销只会导致SQL*Loader从磁盘上读取数据的开销(假设您将其设置为这样做的话),加载数据的直接路径API应该会降低SQL*Loader的效率。当然,作为一个有目的的工具,SQL*Loader解决方案很可能比编写自己的代码更快地与可接受的性能结合在一起,特别是当您只是在学习API的时候。
如果您无法访问直接路径API,并且您正在争论使用数组绑定执行常规路径加载的应用程序还是使用SQL*Loader解决方案执行直接路径加载的应用程序,那么问题就更近了。你可能需要对这两个人进行基准测试。直接路径加载比常规路径加载更有效.但是,将所有数据写入磁盘并将其全部读回将导致额外的成本。将数据读写到磁盘的成本是否超过直接路径负载的好处将取决于各种特定于应用程序的因素(数据量、磁盘速度、网络I/O等)。
要考虑的另一个选项是将文件写入磁盘,将文件复制到数据库服务器,然后使用外部表将数据公开给数据库。这通常比使用客户机上的SQL*Loader更有效。它是否比来自应用程序的直接路径加载更好,以及编写文件、移动文件以及通常将控制从应用程序移到操作系统实用程序并返回到应用程序的额外复杂性是否超过了在应用程序中编写更多代码的复杂性,这是您自己需要回答的问题。
https://stackoverflow.com/questions/24514121
复制相似问题