Высокопроизводительная вставка с помощью SqlBulkCopy с IDataReader

SqlBulkCopy
можно использовать в трех вариантах: вставка данных, представленных в виде DataTable
, массива DataRow
или IDataReader
экземпляра. В этой статье я продемонстрирую две реализации IDataReader
интерфейса, которые используются в сочетании с SqlBulkCopy
высокопроизводительной вставкой в базу данных. Два других варианта похожи друг на друга и могут использоваться для относительно небольших объемов данных, поскольку они требуют, чтобы все записи были предварительно загружены в память перед их передачей SqlBulkCopy
. Напротив, этот IDataReader
подход более гибкий и позволяет работать с неограниченным количеством записей в «ленивом» режиме, что означает, что данные могут передаваться SqlBulkCopy
на лету так быстро, как сервер может их использовать. Это аналогично подходу IList<T>
vs.IEnumerable<T>
.