ヘッダーをスキップ
Oracle® Data Provider for .NET開発者ガイド
11g リリース2 (11.2.0.4)
B66456-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

OracleBulkCopyクラス

OracleBulkCopyオブジェクトは別のデータ・ソースからOracle表にデータを効率的に一括ロードまたはコピーします。

クラスの継承

System.Object

  System.OracleBulkCopy

宣言

// C#
public sealed class OracleBulkCopy : IDisposable
 

スレッド安全性

パブリック静的メソッドはスレッドセーフですが、インスタンス・メソッドではスレッド安全性は保証されません。

備考

OracleBulkCopyクラスは、Oracle Database表にのみデータを書き込む際に使用できます。ただし、データ・ソースに制限はありません。データがDataTableインスタンスにロードされるか、IDataReaderインスタンスで読込み可能であるかぎりデータ・ソースは使用されます。

要件

ネームスペース: Oracle.DataAccess.Client

アセンブリ: Oracle.DataAccess.dll

ODP.NETのバージョン: ODP.NET for .NET Framework 2.0またはODP.NET for .NET Framework 4


OracleBulkCopyメンバー

OracleBulkCopyメンバーは次の表にリストされています。

OracleBulkCopyコンストラクタ

OracleBulkCopyコンストラクタを、表17-1にリストします。

表17-1 OracleBulkCopyコンストラクタ

コンストラクタ 説明

OracleBulkCopyコンストラクタ


OracleBulkCopyコンストラクタでは、OracleBulkCopyクラスの新規インスタンスを作成します


OracleBulkCopyプロパティ

OracleBulkCopyプロパティを、表17-2にリストします。

表17-2 OracleBulkCopyプロパティ

プロパティ 説明

BatchSize


バッチとしてデータベースに送信される行数を指定します

BulkCopyOptions


一括コピー操作の動作を識別するOracleBulkCopyOptionsの列挙値を指定します

BulkCopyTimeout


中断される前に一括コピー操作が完了するまでの秒数を指定します

ColumnMappings


データ・ソースと保存先表間の列マッピングを指定します

Connection


Oracle Databaseが一括コピー操作の実行に使用するOracleConnectionオブジェクトを指定します

DestinationTableName


データがロードされるデータベース表を指定します

NotifyAfter


通知イベントが生成される前に処理された行数を定義します


OracleBulkCopyパブリック・メソッド

OracleBulkCopyパブリック・メソッドを、表17-3にリストします。

表17-3 OracleBulkCopyパブリック・メソッド

メソッド 説明

Close


OracleBulkCopyインスタンスをクローズします

Dispose


オブジェクトにより割り当てられたリソースまたはメモリーを解除します

WriteToServer


保存先表に行をコピーします


OracleBulkCopyイベント

OracleBulkCopyイベントを、表17-4にリストします。

表17-4 OracleBulkCopyイベント

イベント 説明

OracleRowsCopied


OracleBulkCopy.NotifyAfterプロパティで指定された行数が処理されるたびにトリガーされます



OracleBulkCopyコンストラクタ

OracleBulkCopyコンストラクタでは、OracleBulkCopyクラスの新規インスタンスを作成します。

オーバーロード・リスト:

  • OracleBulkCopy(OracleConnection)

    このコンストラクタでは、指定された接続とOracleBulkCopyOptionsのデフォルト値を使用してOracleBulkCopyクラスの新規インスタンスがインスタンス化されます。

  • OracleBulkCopy(string)

    このコンストラクタでは、指定されたconnectionStringおよびOracleBulkCopyOptionsのデフォルト値に基づいてOracleBulkCopyの新規インスタンスがインスタンス化されます。

  • OracleBulkCopy(OracleConnection, OracleBulkCopyOptions)

    このコンストラクタでは、指定された接続オブジェクトとOracleBulkCopyOptionsの値を使用してOracleBulkCopyの新規インスタンスがインスタンス化されます。

  • OracleBulkCopy(string, OracleBulkCopyOptions)

    このコンストラクタでは、指定されたconnectionStringおよびOracleBulkCopyOptionsの値に基づいてOracleConnectionの新規インスタンスがインスタンス化されます。

OracleBulkCopy(OracleConnection)

このコンストラクタでは、指定された接続とデフォルトのOracleBulkCopyOptionsの列挙値を使用してOracleBulkCopyクラスの新規インスタンスがインスタンス化されます。

宣言

// C#
public OracleBulkCopy(OracleConnection connection);

パラメータ

  • connection

    一括コピー操作を実行するOracleConnectionのオープン・インスタンス。

例外

ArgumentNullException - connectionパラメータがNULLです。

InvalidOperationException - 接続がオープン状態ではありません。

備考

このコンストラクタに渡される接続オブジェクトはオープンされている必要があります。OracleBulkCopyインスタンスがクローズされると、オープンのままとなります。

このコンストラクタでは、デフォルトの列挙値OracleBulkCopyOptions.Defaultが使用されます。

Connectionプロパティは指定した接続に設定されます。

OracleBulkCopy(string)

このコンストラクタでは、指定されたconnectionStringに基づいて最初にOracleConnectionオブジェクトを作成し、次にOracleConnectionオブジェクトおよびOracleBulkCopyOptionsデフォルト値を使用して新規のOracleBulkCopyを初期化して、OracleBulkCopyクラスの新規インスタンスがインスタンス化されます。

宣言

// C#
public OracleBulkCopy(string connectionString);

パラメータ

  • connectionString

    Oracle Databaseへの接続および一括コピー操作の実行に使用される接続情報。

例外

ArgumentNullException - connectionStringパラメータがNullです。

ArgumentException - connectionStringパラメータが空です。

備考

WriteToServerメソッドは、接続がまだオープンでない場合に接続を開きます。OracleBulkCopyインスタンスがクローズされると、接続も自動的にクローズされます。

このコンストラクタでは、デフォルトの列挙値OracleBulkCopyOptions.Defaultが使用されます。

Connectionプロパティは、指定したconnectionStringを使用して初期化されるOracleConnectionオブジェクトに設定されます。

OracleBulkCopy(OracleConnection, OracleBulkCopyOptions)

このコンストラクタでは、指定された接続オブジェクトとOracleBulkCopyOptionsの値を使用してOracleBulkCopyの新規インスタンスがインスタンス化されます。

宣言

// C#
public OracleBulkCopy(OracleConnection connection, OracleBulkCopyOptions      copyOptions);

パラメータ

  • connection

    一括コピー操作を実行するOracleConnectionオブジェクトのオープン・インスタンス。

  • copyOptions

    OracleBulkCopyオブジェクトの動作を識別するOracleBulkCopyOptionsの列挙値の組合せ。

例外

ArgumentNullException - connectionパラメータがNULLです。

InvalidOperationException - 接続がオープン状態ではありません。

備考

このコンストラクタに渡される接続はオープンされている必要があります。OracleBulkCopyインスタンスがクローズされると、オープンのままとなります。

Connectionプロパティは指定した接続に設定されます。

OracleBulkCopy(string, OracleBulkCopyOptions)

このコンストラクタでは、指定されたconnectionStringに基づいて最初にOracleConnectionオブジェクトを作成し、次にOracleConnectionオブジェクトおよび指定されたOracleBulkCopyOptionsの列挙値を使用して新規のOracleBulkCopyを初期化して、OracleBulkCopyクラスの新規インスタンスがインスタンス化されます。

宣言

// C#
public OracleBulkCopy(string connectionString, OracleBulkCopyOptions copyOptions);

パラメータ

  • connectionString

    一括コピー操作を実行するためにOracle Databaseに接続する際に使用される接続情報。

  • copyOptions

    一括コピー操作の動作を識別するOracleBulkCopyOptionsの列挙値の組合せ。

例外

ArgumentNullException - connectionStringはNullです。

ArgumentException - connectionStringパラメータが空です。

備考

このコンストラクタでは、OracleConnectionクラスの新規インスタンスを使用してOracleBulkCopyクラスの新規インスタンスを初期化します。OracleBulkCopyインスタンスはcopyOptionsパラメータで指定されたオプションに従って動作します。

OracleBulkCopyインスタンスがクローズされると、接続も自動的にクローズされます。

Connectionプロパティは、指定したconnectionStringを使用して初期化されるOracleConnectionオブジェクトに設定されます。


OracleBulkCopyプロパティ

OracleBulkCopyプロパティを、表17-5にリストします。

表17-5 OracleBulkCopyプロパティ

プロパティ 説明

BatchSize


バッチとしてデータベースに送信される行数を指定します

BulkCopyOptions


一括コピー操作の動作を識別するOracleBulkCopyOptionsの列挙値を指定します

BulkCopyTimeout


中断される前に一括コピー操作が完了するまでの秒数を指定します

ColumnMappings


データ・ソースと保存先表間の列マッピングを指定します

Connection


Oracle Databaseが一括コピー操作の実行に使用するOracleConnectionオブジェクトを指定します

DestinationTableName


データがロードされるデータベース表を指定します

NotifyAfter


通知イベントが生成される前に処理された行数を定義します


BatchSize

このプロパティは、バッチとしてデータベースに送信される行数を指定します。

宣言

// C#
public int BatchSize {get; set;}

プロパティ値

バッチとしてデータベースに送信される行数の整数値。

例外

ArgumentOutOfRangeException - バッチ・サイズがゼロ未満です。

備考

デフォルト値はゼロで、複数のバッチでは行はデータベースに送信されないことを示します。行セット全体が1回のバッチで送信されます。

バッチは、BatchSizeの行数が処理されるか、データベースに送信する行がなくなると完了します。

  • BatchSize > 0で、UseInternalTransaction一括コピー・オプションが指定されていると、各一括コピー操作のバッチがトランザクション内に発生します。一括コピー操作の実行に使用される接続がすでにトランザクションの一部である場合、InvalidOperationException例外が発生します。

  • BatchSize > 0UseInternalTransactionオプションが指定されていない場合は、行はサイズBatchSizeの複数のバッチではデータベースに送信されませんが、トランザクション関連のアクションは実行されません。

BatchSizeプロパティの設定はいつでも可能です。一括コピーがすでに実行中である場合、現在のバッチ・サイズは前のバッチ・サイズによって決定されます。後続のバッチには新規のバッチ・サイズが使用されます。

BatchSizeプロパティが最初はゼロで、WriteToServer操作の実行中に変更された場合、その操作は単一バッチとしてデータにロードされます。同じOracleBulkCopyインスタンス上で実行される次回以降のWriteToServer操作では、新規のBatchSizeが使用されます。

BulkCopyOptions

このプロパティはOracleBulkCopyOptionsの列挙値を指定し、一括コピー操作の動作を決定します。

宣言

// C#
public OracleBulkCopyOptions BulkCopyOptions {get; set;}

プロパティ値

一括コピー操作の動作を定義するOracleBulkCopyOptionsの列挙オブジェクト。

例外

ArgumentNullException - 一括コピー・オプション・セットはNULLです。

備考

このプロパティのデフォルト値はOracleBulkCopyOptions.Defaultの値です。このプロパティは、一括コピー操作のバッチ間の一括コピー・オプションの変更に使用できます。

BulkCopyTimeout

このプロパティは、中断される前に一括コピー操作が完了するまでの秒数を指定します。

宣言

// C#
public int BulkCopyTimeout {get; set;}

プロパティ値

一括コピー操作がタイムアウトした後の秒数の整数値。

例外

ArgumentOutOfRangeException - タイムアウト値はゼロ未満に設定されています。

備考

デフォルト値は30秒です。

BatchSize>0の場合、前のバッチでデータベースに送信された行はコミットされたままです。現在のバッチで処理される行はデータベースに送信されません。BatchSize=0である場合データベースに送信される行はありません。

ColumnMappings

このプロパティは、データ・ソースと保存先表間の列マッピングを指定します。

宣言

// C#
public OracleBulkCopyColumnMappingCollection ColumnMappings {get;}

プロパティ値

ソースと保存先表間の列マッピングを定義するOracleBulkCopyColumnMappingCollectionオブジェクト。

備考

ColumnMappingsコレクションは、データ・ソースおよび保存先表がそれぞれ同じ列数で、各ソース列の順序位置が対応する保存先列の順序位置に一致する場合は必要ありません。しかし、列の数が違ったり順序位置が一致しない場合は、データが正しい列にコピーされるか確認するためにColumnMappingsコレクションを使用する必要があります。

一括コピー操作の実行中は、このコレクションにアクセスはできますが変更はできません。

デフォルトでは、このプロパティは列マッピングの空のコレクションを指定します。

Connection

このプロパティは、Oracle Databaseが一括コピー操作の実行に使用するOracleConnectionオブジェクトを指定します。

宣言

// C#
public OracleConnection Connection {get; }

プロパティ値

一括コピー操作に使用されるOracleConnectionオブジェクト。

備考

OracleBulkCopyオブジェクトが接続文字列を使用して初期化されると、このプロパティによってOracleBulkCopyで構成される接続が取得されます。

DestinationTableName

このプロパティは、データがロードされるデータベース表を指定します。

宣言

// C#
public string DestinationTableName {get; set;}

プロパティ値

保存先表名を識別する文字列値。

例外

ArgumentNullException - 保存先表名のセットがNullです。

ArgumentException - 保存先表名が空です。

備考

DestinationTableNameWriteToServer操作が実行中に変更されると、その変更は現在の操作には影響しません。新規のDestinationTableName値は次回のWriteToServerメソッドのコール時に使用されます。

NotifyAfter

このプロパティは通知イベントが生成される前に処理された行数を定義します。

宣言

// C#
public int NotifyAfter {get; set;}

プロパティ値

通知イベントが発生するまでに処理対象として指定された行数の整数値。

例外

ArgumentOutOfRangeException - プロパティ値がゼロ未満の数値に設定されています。

備考

このプロパティのデフォルト値はゼロで、通知イベントが生成されないことを示します。

このプロパティは、一括コピー操作の進行を表示するユーザー・インタフェース・コンポネントで取得されます。NotifyAfterプロパティの設定は一括コピー操作中であってもいつでも可能です。変更は、同じインスタンスでの次回の通知および次回の操作から有効となります。


OracleBulkCopyパブリック・メソッド

OracleBulkCopyメソッドを、表17-6にリストします。

表17-6 OracleBulkCopyパブリック・メソッド

メソッド 説明

Close


OracleBulkCopyインスタンスをクローズします

Dispose


オブジェクトにより割り当てられたリソースまたはメモリーを解除します

WriteToServer


保存先表に行をコピーします


Close

このメソッドは、OracleBulkCopyインスタンスをクローズします。

宣言

// C#
public void Close();

例外

InvalidOperationException - CloseメソッドはOracleRowsCopiedイベントからコールされました。

備考

CloseメソッドがOracleBulkCopyオブジェクトでコールされると、後続の操作は行われません。WriteToServerメソッドをコールしてInvalidOperationExceptionをスローします。接続がOracleBulkCopyオブジェクトによってオープンされている、つまり、接続文字列を取得するコンストラクタによってOracleBulkCopyオブジェクトが作成された場合は、Closeメソッドによって接続がクローズされます。

Dispose

このメソッドでは、オブジェクトにより割り当てられたリソースまたはメモリーを解除します。

宣言

// C#
public void Dispose();

実装

IDisposable

備考

DisposeメソッドがOracleBulkCopyオブジェクトでコールされると、次の操作は行われません。接続がOracleBulkCopyオブジェクトによってオープンされている、つまり、接続文字列を取得するコンストラクタによってOracleBulkCopyオブジェクトが作成された場合は、接続がクローズされます。

WriteToServer

WriteToServerは保存先表に行をコピーします。

オーバーロード・リスト:

  • WriteToServer(DataRow[])

    このメソッドでは、指定されたDataRow配列から、OracleBulkCopyオブジェクトのDestinationTableNameプロパティによって指定された保存先表にすべての行がコピーされます。

  • WriteToServer(DataTable)

    このメソッドでは、指定されたDataTableのすべての行が、OracleBulkCopyオブジェクトのDestinationTableNameプロパティによって指定された保存先表にコピーされます。

  • WriteToServer(IDataReader)

    このメソッドでは、指定されたIDataReaderのすべての行が、OracleBulkCopyオブジェクトのDestinationTableNameプロパティによって指定された保存先表にコピーされます。

  • WriteToServer(DataTable, DataRowState)

    このメソッドでは、指定されたDataTableの指定された行の状態に一致する行が、OracleBulkCopyオブジェクトのDestinationTableNameプロパティによって指定された保存先表にコピーされます。

  • WriteToServer(OracleRefCursor)

    このメソッドでは、指定されたOracleRefCursorから、OracleBulkCopyオブジェクトのDestinationTableNameプロパティによって指定された保存先表にすべての行がコピーされます。

WriteToServer(DataRow[])

このメソッドでは、指定されたDataRow配列から、OracleBulkCopyオブジェクトのDestinationTableNameプロパティによって指定された保存先表にすべての行がコピーされます。

宣言

// C#
public void WriteToServer(DataRow[] rows);

パラメータ

  • rows

    保存先表にコピーするDataRowオブジェクトの配列。

例外

ArgumentNullException - rowsパラメータがNullです。

InvalidOperationException - 接続がオープン状態ではありません。

備考

ColumnMappingsコレクションはDataRow列から保存先データベース表にマップされます。

WriteToServer(DataTable)

このメソッドでは、指定されたDataTableのすべての行が、OracleBulkCopyオブジェクトのDestinationTableNameプロパティによって指定された保存先表にコピーされます。

宣言

// C#
public void WriteToServer(DataTable table);

パラメータ

  • table

    保存先表にコピーする行を含むソースのDataTable

例外

ArgumentNullException - tableパラメータがNullです。

InvalidOperationException - 接続がオープン状態ではありません。

備考

DataTable内の行は、削除されたものを除いてすべて保存先表にコピーされます。

ColumnMappingsコレクションはDataTable列から保存先データベース表にマップされます。

WriteToServer(IDataReader)

このメソッドでは、指定されたIDataReaderのすべての行が、OracleBulkCopyオブジェクトのDestinationTableNameプロパティによって指定された保存先表にコピーされます。

宣言

// C#
public void WriteToServer(IDataReader reader);

パラメータ

  • reader

    保存先表にコピーする行を含むIDataReaderインスタンス。

例外

ArgumentNullException - readerパラメータがNullです。

InvalidOperationException - 接続がオープン状態ではありません。

備考

一括コピー操作はデータ・リーダーの次に使用可能な行で開始します。通常、ExecuteReaderメソッドへのコールによって戻されるreaderは、次の行が最初の行になるようにWriteToServerメソッドに渡されます。複数の結果セットをコピーするには、アプリケーションはreaderNextResultをコールし、WriteToServerメソッドを再コールする必要があります。

このWriteToServerメソッドは、reader.Readを内部でコールしてソース行を取得するように、リーダーの状態を変更します。このため、WriteToServer操作が完了すると、結果セットの最後はreaderとなります。

ColumnMappingsコレクションはデータ・リーダー列から保存先データベース表にマップされます。

WriteToServer(DataTable, DataRowState)

このメソッドでは、指定されたDataTableの指定された行の状態に一致する行が、OracleBulkCopyオブジェクトのDestinationTableNameプロパティによって指定された保存先表にコピーされます。

宣言

// C#
public void WriteToServer(DataTable table, DataRowState rowState);

パラメータ

  • table

    保存先表にコピーする行を含むDataTable

  • rowState

    DataRowStateの列挙値。行の状態に一致する行のみ保存先にコピーされます。

例外

ArgumentNullException - tableまたはrowStateパラメータがNullです。

InvalidOperationException - 接続がオープン状態ではありません。

備考

DataTable内の行がrowState引数に示されている状態で、削除されていない場合のみ、保存先表にコピーされます。

ColumnMappingsコレクションはDataTable列から保存先データベース表にマップされます。

WriteToServer(OracleRefCursor)

このメソッドでは、指定されたOracleRefCursorから、OracleBulkCopyオブジェクトのDestinationTableNameプロパティによって指定された保存先表にすべての行がコピーされます。

宣言

// C#
public void WriteToServer(OracleRefCursor refCursor);

パラメータ

  • refCursor

    保存先表にコピーする行を含むOracleRefCursorオブジェクト。

例外

ArgumentNullException - refCursorパラメータがNullです

InvalidOperationException - 接続がオープン状態ではありません。

備考

ColumnMappingsコレクションはOracleRefCursor列から保存先データベース表にマップされます。


OracleBulkCopyイベント

OracleBulkCopyイベントを、表17-7にリストします。

表17-7 OracleBulkCopyイベント

イベント 説明

OracleRowsCopied


OracleBulkCopy.NotifyAfterプロパティで指定された行数が処理されるたびにトリガーされます


OracleRowsCopied

このイベントは、OracleBulkCopy.NotifyAfterプロパティで指定された行数が処理されるたびにトリガーされます。

宣言

// C#
public event OracleRowsCopiedEventHandler OracleRowsCopied;

例外

InvalidOperationException - Closeメソッドはこのイベントでコールされます。

備考

このイベントはNotifyAfterプロパティで指定された行数が処理されると発生します。これは、行がデータベースに送信されるかコミットされることを示すものではありません。

このイベントからの操作を取り消すには、OracleRowsCopiedEventArgsクラスのAbortプロパティを使用します。