Самый быстрый способ скопировать данные из одной таблицы в другую, используя linq - PullRequest
0 голосов
/ 20 января 2012

У меня есть таблица на другом сервере SQL, которую мне нужно скопировать за одну ночь.Структура таблицы назначения очень похожа, поэтому я собирался использовать что-то вроде приведенного ниже кода.Источник - http://forums.asp.net/t/1322979.aspx/1

Я еще не пробовал, но есть ли лучший / более быстрый способ сделать это в linq?

    //there exist two table list and listSecond
    DataClassesDataContext dataClass = new DataClassesDataContext(); //create the instance of the DataContext

    var str = from a in dataClass.lists select a;
    foreach (var val in str) // iterator the data from the list and insert them into the listSecond
    {
        listSecond ls = new listSecond();
        ls.ID = val.ID;
        ls.pid = val.pid;
        ls.url = val.url;
        dataClass.listSeconds.InsertOnSubmit(ls);

    }
    dataClass.SubmitChanges();
    Response.Write("success");

1 Ответ

4 голосов
/ 20 января 2012

Использование LINQ для вставки больших объемов данных не очень хорошая идея, за исключением, может быть, сложных схем, которые требуют больших преобразований перед копированием. Он создаст отдельный запрос для каждой вставленной строки, в дополнение к регистрации их всех в журнале транзакций.

Здесь можно найти гораздо более быстрое решение здесь - он использует SqlBulkCopy, который представляет собой метод для вставки больших объемов данных в один запрос без ведения журнала транзакций для его замедления. Это будет на порядок быстрее, и я говорю вам это из личного опыта с обоими методами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...