Как прочитать запись в базе данных с помощью DataReader и добавить ее в DataTable - PullRequest
0 голосов
/ 22 марта 2010

У меня есть некоторые данные в таблице базы данных Oracle (около 4 миллионов записей), которые я хочу преобразовать и сохранить в базе данных MSSQL с помощью ADO.NET. До сих пор я использовал (для гораздо меньших таблиц) DataAdapter для чтения данных из базы данных Oracle и добавления DataTable в DataSet для дальнейшей обработки.

Когда я попробовал это с моим огромным столом, возникло исключение вне памяти. (Я предполагаю, что это потому, что я не могу загрузить всю таблицу в свою память) :)

Теперь я ищу хороший способ выполнить это извлечение / перенос / загрузку, не сохраняя всю таблицу в памяти. Я хотел бы использовать DataReader и читать отдельные dataRecords в DataTable. Если в нем около 100 тыс. Строк, я бы хотел обработать их и впоследствии очистить DataTable (чтобы снова освободить память).

Теперь я хотел бы узнать, как добавить одну строку данных в виде строки в таблицу данных с помощью ado.net и как полностью удалить таблицу данных из памяти: мой код пока:

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

Большое спасибо за ваш ответ!

1 Ответ

1 голос
/ 22 марта 2010

Вы можете использовать свой оригинальный метод, но делать это партиями, используя limit и skip в операторе выбора. Таким образом, вы просто делаете 100 000 строк за раз и зацикливаетесь, пока не получите все данные.

Таким образом, вам не придется слишком сильно менять код

...