Какой самый быстрый способ получить DataTable в SQL Server? - PullRequest
7 голосов
/ 11 июня 2010

У меня есть DataTable в памяти, который мне нужно выгрузить прямо во временную таблицу SQL Server.

После того, как данные были вставлены, я немного преобразовал их, а затем вставил подмножество этих записей в постоянную таблицу.

Самая трудоемкая часть этой операции - получение данных во временную таблицу.

Теперь я должен использовать временные таблицы, потому что одновременно запущено несколько копий этого приложения, и мне нужен слой изоляции, пока не произойдет фактическая вставка в постоянную таблицу.

Какой самый быстрый способ выполнить массовую вставку из таблицы данных C # в временную таблицу SQL?

Я не могу использовать какие-либо сторонние инструменты для этого, так как я преобразую данные в памяти.

Мой текущий метод заключается в создании параметризованного SqlCommand:

INSERT INTO #table (col1, col2, ... col200) VALUES (@col1, @col2, ... @col200)

, а затем для каждой строки очистите и установите параметры и выполните.

Должен быть более эффективный способ. Я могу читать и записывать записи на диск за считанные секунды ...

Ответы [ 2 ]

9 голосов
/ 11 июня 2010

SqlBulkCopy получит данные очень быстро.

Я недавно писал в блоге , как максимизировать производительность.Некоторые статистические данные и примеры там.Я сравнил 2 метода, 1 с использованием SqlDataAdapter и 1 с использованием SqlBulkCopy - нижняя строка была для массовой вставки записей по 100 КБ, подход с использованием адаптера данных занял ~ 25 секунд по сравнению с ~ 0,8 с для SqlBulkCopy.

9 голосов
/ 11 июня 2010

Вы должны использовать SqlBulkCopy класс .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...