Более быстрый способ экспорта данных из листа Excel 2007 в SQL Server 2005 - PullRequest
0 голосов
/ 27 декабря 2010

У меня есть веб-приложение (ASP.NET 3.5), которое позволяет пользователям загружать свои собственные таблицы Excel. Этот лист содержит информацию об элементах, которые необходимо вставить в SQL Server 2005.

У меня уже есть эта функциональность, однако она очень медленная (для завершения запроса требуется почти 20 минут). Мне нужен лучший способ справиться с этой проблемой.

Лист содержит информацию об объекте. Эти свойства будут вставлены, например, в несколько таблиц (Книги, Авторы, Заголовки и т. Д.)

Что я сейчас делаю, так это:

  1. Пользователь загружает файл
  2. Приложение открывает файл
  3. Читать каждую строку и обновлять базу данных соответственно.

Я использую Microsoft.Office.Interop.Excel

Редактировать: я работаю с 10 000+ строк на листе.

Ответы [ 4 ]

0 голосов
/ 27 декабря 2010

Исходя из моего опыта, чтение и написание электронных таблиц Excel с помощью взаимодействия медленнее, чем патока.Я не удивлен, что так много времени занимает работа с данными.

Чтобы приступить к созданию экземпляров Excel, попробуйте напрямую обратиться к электронным таблицам.Вы, вероятно, заметите улучшение коэффициента - вы можете сделать это через несколько секунд.Если вы работаете с файлами 2007/2010 .xlsx, я с успехом использовал EPPlus .Если вы принимаете старые файлы .xls , это выглядит как хорошее начало, но я никогда не использовал его раньше.

Определенно сначала профилируйте ваше приложение, хотя, чтобы определить, является ли это даже проблемой -Могу поспорить, что это так, но это могут быть ваши вставки SQL или что-то.

0 голосов
/ 27 декабря 2010

Как насчет использования Microsoft Jet Database Engine для преобразования электронной таблицы в таблицу данных, которую можно затем массово вставить в базу данных.

Извлечь эту одну.

Если вы обрабатываете файлы Excel 2007, вам нужно использовать другого поставщика.

0 голосов
/ 27 декабря 2010

Вы пытались открыть файл EXCEL напрямую с сервера SQL с помощью openrowset .

0 голосов
/ 27 декабря 2010

Вы можете использовать SqlBulkCopy Класс.

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