1

Oracleデータベースに10列のテーブルhm_itemがあり、SQLサーバーデータベースに同じ名前のテーブルがあります。ユーザーがボタンをクリックしたときに、Oracleデータベースからデータをインポートする必要があります。これを行うための最良の方法はどれですか??

4

1 に答える 1

2

使用する必要はありませんDataSet。ADO.NETコマンドAPIを使用できるはずです。つまり、2つの接続で:

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 に答える