SqlClient CopyTableToServer - методNemiro.Data.dll
Переносит указанную таблицу в базу данных. Используется SqlBulkCopy. Это самый быстрый и экономичный способ переноса больших объемов данных в базу.

Пространство имён: Nemiro.Data.Sql
Сборка: Nemiro.Data (в Nemiro.Data.dll) Версия: 2.11.4.126 (2.11.4.126)
Синтаксис

public void CopyTableToServer(
	DataTable value
)

Параметры

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);
}
См. также