OracleBulkCopyOptionsの列挙

OracleBulkCopyOptionsの列挙は、OracleBulkCopyクラスのインスタンスと組み合せることができ、列挙の動作とインスタンスのWriteToServerメソッドの動作を識別するオプションとして使用可能な値を指定します。

表17-17は、すべてのOracleBulkCopyOptionsの列挙値と、それぞれの列挙値の説明をリストします。

表17-17 OracleBulkCopyOptionsの列挙メンバー

メンバー名 説明

Default

すべてのオプションに対してデフォルト値が使用可能であることを示します

EnforceIndexChecks

ダイレクト・パス・ロードによって索引関連のエラーが発生した場合にロードが中断されることを示します。行はロードされず、索引は変更されません。このオプションが指定されておらず、ダイレクト・パス・ロードによって索引が使用不可になった場合は、行がロードされ、索引は使用不可状態のままになります。

Oracleデータベースの主キー制約および一意制約は、一意索引を使用して強制適用されます。つまり、データベースによって自動的に、主キーまたは一意として指定された列に対して、一意索引が作成されます。したがって、このオプションは、主キー制約と一意制約のみに影響します。

このオプションの動作は、SQL*LOADERでのNO_INDEX_ERRORSパラメータに似ています。

このメンバーは、管理対象ODP.NETおよびODP.NET Core 23.8以上でサポートされています。

ノート:

ODP.NET一括コピーの使用中に、チェック制約とNOT NULL制約が自動的に強制適用されますが、外部キー制約が強制適用されることはありません。

NotifyAllRowsProcessed

一括コピーですべての行が処理されたときに、通知を送信してそれを示します。このメンバーは、OracleBulkCopy.NotifyAfterと組み合せて使用することも、単独で使用することもできます。NotifyAfterは、特定の行数が一括コピーされた後に通知を送信します。一括コピー操作全体が完了したときに、NotifyAfter値がコピーされた合計行の倍数である場合にのみアラートが送信されます。

たとえば、NotifyAllRowsProcessedを有効にせずにNotifyAfter=5を設定したとします。15行を一括コピーすると、3つのアラート(5行目の後に1回、10行目の後に1回、15行目の後に1回)を受信します。かわりに12行を一括コピーすると、2つのアラート(5行目の後に1回、10行目の後に1回)のみを受信します。両方のシナリオでNotifyAllRowsProcessedも有効にした場合、両方のインスタンスで3つのアラートを受信し、一括コピー操作で15行の処理が完了すると常にアラートを受信します。

NotifyAllRowsProcessedは、NotifyAfterの値に関係なくすべての行が処理されると通知を送信します。

設計上、NotifyAfterは、一括コピーの進行状況を測定することを目的としています。NotifyAllRowsProcessedは、一括コピーですべての行が処理されたときを示すことを目的としています。

このメンバーは、バージョン23.5、21.15および19.24以降の管理対象ODP.NETおよびODP.NET Coreでのみサポートされます。

UseInternalTransaction

トランザクション内で一括コピー操作のバッチが発生することを示します。一括コピー操作の実行に使用される接続がすでにトランザクションの一部である場合、InvalidOperationException例外が発生します。

このメンバーが指定されていない場合、トランザクションに関連したアクティビティなしに、行のBatchSize番号がデータベースに送信されます。

ノート:

すべての一括コピー操作は、アプリケーションによって作成されるローカル・トランザクションまたは分散トランザクションに関係なく有効です。

要件

プロバイダ ODP.NET管理対象外ドライバ ODP.NET管理対象ドライバ ODP.NET Core

アセンブリ

Oracle.DataAccess.dll

Oracle.ManagedDataAccess.dll

Oracle.ManagedDataAccess.dll

ネームスペース

Oracle.DataAccess.Client

Oracle.ManagedDataAccess.Client

Oracle.ManagedDataAccess.Client

.NET Framework

システム要件を参照してください

システム要件を参照してください

-

.NET (Core)

-

-

システム要件を参照してください

サンプル・コード: NotifyAllRowsProcessed

// Set up the bulk copy object so that it will notify the app when all rows have been copied.
using (OracleBulkCopy bulkCopy = new OracleBulkCopy(destinationConnection, OracleBulkCopyOption.NotifyAllRowsProcessed))
{
  bulkCopy.DestinationTableName = "BLOGS";
 
  try
  {
    // Write rows from the source to the destination.
    bulkCopy.NotifyAfter = 5;
  // OnSqlRowsCopied is the event handler delegate whenever NotifyAfter or
      NotifyAlRowsProcessed sends a notification. OnSqlRowsCopied's implementation is not included
      in this code sample.
    bulkCopy.OracleRowsCopied += new OracleRowsCopiedEventHandler(OnSqlRowsCopied);
    bulkCopy.WriteToServer(reader);
  }
  catch (Exception ex)
  {
    Console.WriteLine(ex.Message);
  }
  finally
  {
    // Close the OracleDataReader. The OracleBulkCopy object is automatically closed at the end of the using block.
    reader.Close();
  }
}