1

我在 oracle 数据库中有一个表 hm_item,它有 10 列,我在 sql server 数据库中有一个同名的表。现在,当用户单击按钮时,我必须从 oracle 数据库中导入数据。这样做的最佳方法是什么?

4

1 回答 1

2

无需使用DataSet;您应该能够使用 ADO.NET 命令 API,即使用您的两个连接:

using(var sqlServer = GetOpenSqlServerConnection()) // TODO
using(var oracle = GetOpenOracleConnection()) // TODO
using(var cmd = oracle.CreateCommand())
using(var bcp = new SqlBulkCopy(sqlServer))
{
    bcp.DestinationTableName = "TableName";
    cmd.CommandText = "select * from TableName";
    using(var reader = cmd.ExecuteReader())
    {
        bcp.WriteToServer(reader);
    }
}

优点(超过DataSet):

  • 无需一次将所有数据保存在内存中;非常适合大桌子
  • 无需等待加载所有数据即可开始写入
  • 双向的高性能原始数据(没有每行/每批命令 - 只是“这里的数据:等等等等”)
于 2012-08-06T08:11:19.023 回答