Массовая вставка миллионов записей Sql Server

У меня есть приложение службы Windows, которое получает поток данных в следующем формате

IDX|20120512|075659|00000002|3|AALI                 |Astra Agro Lestari Tbk.                                     |0|ORDI_PREOPEN|12  |00000001550.00|00000001291.67|00001574745000|00001574745000|00500|XDS1BXO1|                                        |00001574745000|ݤ
IDX|20120512|075659|00000022|3|ALMI                 |Alumindo Light Metal Industry Tbk.                          |0|ORDI        |33  |00000001300.00|00000001300.00|00000308000000|00000308000000|00500|--U3---2|                                        |00000308000000|õÄ

Эти данные поступают в миллионах строк и последовательно 00000002....00198562, и у меня есть анализировать и вставлять их в соответствии с последовательностью в таблицу базы данных.

Мой вопрос: как лучше всего (наиболее эффективно) вставить эти данные в мою базу данных? Я попытался использовать простой метод, чтобы открыть объект SqlConnection, затем сгенерировать строку сценария вставки SQL, а затем выполнить сценарий с использованием объекта SqlCommand, однако этот метод занимает слишком много времени.

Я читал, что могу использовать Sql BULK INSERT, но он должен читать из текстового файла. Возможно ли в этом сценарии использовать BULK INSERT? (Я никогда не использовал его раньше).

Спасибо.

обновление: я знаю о SqlBulkCopy, но для этого мне сначала нужно иметь DataTable, хорошо ли это для производительности? Если возможно, я хочу вставить непосредственно из моего источника данных в SQL Server без использования в памяти DataTable.

11
задан Arief 24 May 2012 в 04:52
поделиться