Переносит указанную таблицу в базу данных.
Используется SqlBulkCopy.
Это самый быстрый и экономичный способ переноса больших объемов данных в базу.
Пространство имён: Nemiro.Data.SqlСборка: Nemiro.Data (в Nemiro.Data.dll) Версия: 2.11.4.126 (2.11.4.126)
Синтаксис
Параметры
- value
- Тип: System.Data DataTable
Таблица, данные которой нужно перенести в базу SQL Server.
Исключения
Исключение | Условие |
---|---|
ArgumentNullException | Если value имеет значение null (Nothing). |
SqlException | Исключение возникает при возврате SQL Server предупреждения или ошибки. |
StringOrBinaryDataWouldBeTruncatedException | Исключение возникает, если в некоторые поля таблицы добавляются значения, объем которых превышает допустимый размер поля таблицы. |
Заметки
Имя таблицы назначения должно быть в свойстве TableName экземпляра DataTable.
Список полей экземпляра DataTable должен совпадать с колонками таблицы базы данных, куда переносятся данные.
Если коллекция строк в параметре value пустая, то запрос к базе данных не выполняется.
Используйте этот метод, если необходимо перенести большие объемы данных в базу. Метод работает быстрее и потребляет меньше ресурсов, чем использование SQL-инструкции INSERT INTO.
Параметры кэширования при работе с этим методом игнорируются.
Примеры
В следующем примере в базу данных в таблицу hotels переносится список отелей.
Для примера, данные формируются случайным образом.
using (SqlClient client = new SqlClient()) { // Создаем экземпляр класса DataTable. // В качестве имени таблицы указываем hotels. // В базе данных SQL Server должна быть таблица с именем hotels. DataTable table = new DataTable("hotels"); // Добавляем поля в таблицу. // Все перечисленные поля должны присутствовать в таблице hotels // базы данных SQL Server. // Если в таблице на сервере SQL Server есть идентификаторы-счетчики, // значения для которых сервером формируются автоматически, указывать их не нужно. // Для надежности, рекомендуется указывать тип данных полей (вторым параметром). table.Columns.Add("hotel_code"); table.Columns.Add("hotel_name"); table.Columns.Add("hotel_stars"); table.Columns.Add("date_created"); // Генератор случайных чисел, для формирования случайных уровней звездности отелей. Random rnd = new Random(DateTime.Now.Millisecond); // Добавляем в таблицу данные, которые нужно перенести в базу SQL Server. for (int i = 0; i <= 1000; i++) { // В данном примере данные будут случайными. table.Rows.Add(Guid.NewGuid().ToString().Substring(0, 4), Guid.NewGuid().ToString().Replace("-", ""), rnd.Next(1, 5), DateTime.Now); } // Переносим данные в таблицу hotels базы данных SQL Server client.CopyTableToServer(table); }
См. также