使用 SqlBulkCopy 在不同源之间传输数据

Posted

技术标签:

【中文标题】使用 SqlBulkCopy 在不同源之间传输数据【英文标题】:Transferring data between different sources using SqlBulkCopy 【发布时间】:2013-08-06 12:05:32 【问题描述】:

我在 Oracle 数据库中有 1 个表,在 SqlCe 数据库中有另一个表。两个表的名称相同,我想使用 .NET Framework 中提供的 SqlBulkCopy 将 SqlCe 数据库中表的所有内容转移到 Oracle 数据库中的同一个表中。

我知道使用 SqlBulkCopy 可以将任何来源的任何数据传输到 Sql 数据库,但我不确定是否可以从 Sql 数据库(在我的情况下为 SqlCe)到任何来源,例如,来自 SqlCe到甲骨文。如果可能的话,有人可以确认我吗?

【问题讨论】:

我认为这是不可能的。我遇到了这样的问题,我通过 SqlBulkCopy 但从文件中解决了。我将数据从一个数据库导出到文件中,然后通过 SqlBulkCopy 导入另一个数据库。 【参考方案1】:

您不会使用SqlBulkCopy,因为它与 SQL Server 的连接协议 (TDS) 相关联;但是,由于目标是 oracle,OracleBulkCopy 应该可以正常工作。您只需在 SqlCe 源上使用 ExecuteReader,并将其输入:

using(var target = new OracleBulkCopy(oracleConnectionString))
using(var source = cecmd.ExecuteReader()) 
    target.DestinationTableName = "Foo";
    target.WriteToServer(source);

http://docs.oracle.com/html/E10927_01/OracleBulkCopyClass.htm

【讨论】:

+1 不错的解决方案。我遵循了一些更困难的事情。你试过这种方法吗? OracleBulkCopy 不包含在 .NET Framework 中。正如我所看到的,这包含在 Oracle Data Provider for .NET 中,我需要从 Oracle 下载,对吗? @MarcGravell 非常感谢! @user1624552 恐怕我现在知道了

以上是关于使用 SqlBulkCopy 在不同源之间传输数据的主要内容,如果未能解决你的问题,请参考以下文章

SqlBulkCopy Azure DataTable 比流式传输更快

在不相关的活动之间传输数据

防止 SqlBulkCopy 更改 XML 值

SQL Server 2008 R2 的可重试 SQLBulkCopy

跨域请求的常用方式及解释

跨域解决方案