ADO.NETを使用してMSSQLデータベースに変換して保存したいOracleデータベーステーブル(約400万レコード)にいくつかのデータがあります。これまでのところ、(はるかに小さなテーブルの場合) DataAdapter を使用して Oracle データベースからデータを読み取り、さらに処理するために DataTable を DataSet に追加しました。
巨大なテーブルでこれを試したところ、メモリ不足の例外がスローされました。(これは、テーブル全体をメモリにロードできないためだと思います):)
現在、テーブル全体をメモリに保存せずに、この抽出/転送/ロードを実行する良い方法を探しています。DataReader を使用して、DataTable 内の単一の dataRecords を読み取りたいと思います。約10万行ある場合は、それらを処理し、後でDataTableをクリアしたいと思います(メモリを再び解放するため)。
ここで、ado.net を使用して単一の datarecord を行として dataTable に追加する方法と、dataTable をメモリから完全にクリアする方法を知りたいと思います: これまでの私のコード:
Dim dt As New DataTable
Dim count As Int32
count = 0
' reads data records from oracle database table'
While rdr.Read()
'read n records and add them to a dataTable'
While count < 10000
dt.Rows.Add(????)
count = count + 1
End While
'transform data in the dataTable, and insert it to the destination'
' flush the dataTable after insertion'
count = 0
End While
ご回答ありがとうございました!