Изпользование Sqlbulkcopy класса из пространства имен System.data.sqlc

  • Автор темы NikSoft
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

NikSoft

#1
Пусть нам надо быстро создать таблицу в SQL Server из файла, строки которого состоят из элементов, разделенных, например, запятой.
Следующий метод на языке C# решает задачу.

Код:
		public void BulkCopy(string pathOfFile)
{
DataTable  dataTable = new DataTable();
DataRow	 dataRow;
string	 tempLine = "";

StreamReader streamReader  = new StreamReader(pathOfFile);
string tempLines = streamReader.ReadToEnd();
streamReader.Close();

string[] splittedArray = tempLines.Split('\n');

string[] tempArray =splittedArray[0].Split(',');
foreach ( string str in tempArray )
{
dataTable.Columns.Add(new DataColumn());
}

foreach (string str in tempArray)
{
dataRow = dataTable.NewRow();
dataRow.ItemArray = str.Split(',');				
dataTable.Rows.Add(dataRow);	
}	

SqlConnection  sqlConnection = new SqlConnection( Connection );
SqlBulkCopy	 sqlBulkCopy  = new SqlBulkCopy( sqlConnection );
sqlBulkCopy.BatchSize = dataTable.Rows.Count;

sqlConnection.Open();

sqlBulkCopy.DestinationTableName = "test";
sqlBulkCopy.WriteToServer(dataTable);

sqlConnection.Close();
sqlBulkCopy.Close(); 
}
В качестве параметра метода BulkCopy задается путь исходного файла. Строки считанного исходного файла хранятся в массиве
splittedArray. Далее в обьекте таблицы данных dataTable типа DataTable создаем обьекты типа DataColumn, число которых равно числу элементов строки исходного файла. Строки исходного файла расщепляются на элементы и помещяются в
таблицу данных dataTable. Создаем обьект sqlBulkCopy типа SqlBulkCopy, в свойстве которого BatchSize указываем размер пакета для обработки, а в свойстве DestinationTableName указываем имя таблицы SQL Server. Метод WriteToServer класса SqlBulkCopy пишет данные из таблицы данных dataTable в таблицу test SQL Server, число колонок в которой должно совпадать с числом элементов строки исходного файла.
 
Статус
Закрыто для дальнейших ответов.