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

Тема в разделе ".NET", создана пользователем NikSoft, 9 окт 2006.

Статус темы:
Закрыта.
  1. NikSoft

    NikSoft Гость

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

    Код (Text):
            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, число колонок в которой должно совпадать с числом элементов строки исходного файла.
     
Статус темы:
Закрыта.

Поделиться этой страницей