Являются ли пакеты служб SSIS лучшим решением для импорта и экспорта большого объема данных? - PullRequest
3 голосов
/ 21 декабря 2011

Мое требование заключается в том, что в nop commerce 1.9 мне нужно вставить несколько скидок в листе Excel, в котором содержится много данных, поэтому перед выполнением этой задачи мне нужно иметь в виду, какое из них является лучшим решением для этого.

Какой самый быстрый способ загрузить таблицу примеров, содержащую более 100 000 строк кода в C #?

Я прочитал этот вопрос и нашел ответ, что SSIS - вариант.

действительно SSIS лучше всего подходит для импорта и экспорта файлов большого размера. и какие еще преимущества я получу, если буду использовать SSIS пакеты?

Ответы [ 5 ]

3 голосов
/ 21 декабря 2011

Для ~ 100 000 строк производительность не должна быть серьезной проблемой для этого типа данных.SSIS может сделать это, но это не единственный вариант.Я думаю, что есть три разумных подхода к этому:

SSIS: Это может читать файлы Excel.Если ваша электронная таблица хорошо себя ведет (т. Е. Ей можно доверять, если она правильно выложена), тогда SSIS может загрузить содержимое.У него есть некоторые функции регистрации ошибок, но на практике он может только с пользой выгружать файл журнала или записывать ошибки в таблицу журналов.Ошибочные строки могут быть направлены в таблицу хранения.

Плюсы

  • Процесс загрузки довольно прост в разработке.
  • Пакет служб SSIS может бытьизменяется независимо от приложения, если необходимо изменить формат электронной таблицы.
  • Может считывать данные непосредственно из файла электронной таблицы

Минусы:

  • Зависимость от наличия среды выполнения SSIS в системе.
  • Служба SSIS действительно предназначена для установки на стороне сервера;обработка ошибок, как правило, состоит из записи сообщений в журналы.Вам нужно будет найти способ сделать журналы ошибок доступными для пользователя для устранения ошибок.

BCP или BULK INSERT: Вы можете экспортировать электронную таблицу в CSV и использовать BCP или оператор BULK INSERT для загрузки файла.Однако для этого требуется, чтобы файл был экспортирован в CSV-файл и скопирован на диск на сервере базы данных или в доступный для него общий ресурс.

Плюсы:

  • Fast
  • bcp можно предположить присутствовать на сервере.

Минусы:

  • Требуются ручные шаги для экспортав CSV
  • Файл должен быть помещен на том, который можно подключить к серверу.
  • Ограниченные средства обработки ошибок.

SqlBulkCopy API: Если вы уже используете .Net, вы можете читать из электронной таблицы с помощью OLE-автоматизации или ODBC и загружать данные с помощью SQL Server Bulk Load API.Это требует от вас написания подпрограммы на C # для выполнения импорта.Если электронная таблица загружается вручную, ее можно загрузить с ПК пользователя.

Плюсы

  • Не требует установки SSIS на компьютер, *Файл 1065 *
  • может быть расположен на ПК пользователя
  • Процесс загрузки может быть интерактивным, представляя пользователю ошибки и позволяя им исправлять ошибки с помощью нескольких повторных попыток.

Минусы:

  • Максимальные усилия для разработки.
  • Действительно практично только в качестве функции приложения.
2 голосов
/ 21 декабря 2011

SSIS - это инструмент ETL.Вы можете выполнять преобразования, обработку ошибок (как упомянуто Кумаром), поиск в службах SSIS, вы можете перенаправлять недопустимые строки, добавлять производные столбцы и многое другое.Вы даже можете добавить в него файлы конфигурации, чтобы изменить некоторые свойства / параметры ...

Есть и другие варианты загрузки данных в SQL.1, SSIS - вам нужно спроектировать рабочий процесс (вам нужно BIDS или VS, чтобы спроектировать и протестировать пакет) 2, как упоминалось «demas», вы можете экспортировать данные в плоский файл и использовать BCP / массовую вставку 3, вы можете использоватьоператор openrowset в SQL (для использования этой функции необходимо включить специальные распределенные запросы). Затем вы можете просто запросить файл Excel из SQL - это может быть простым способом чтения данных:

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\test.xls', 'SELECT * FROM [Sheet1$]') 

- try to look on google for OPENROWSET + EXCEL to get more examples. In this scenario you can query also text files, ACCESS ...

Есть больше способов, как это сделать, но это действительно зависит от того, чего вы хотите достичь.В этом случае 100K строк - это не так много.

1 голос
/ 21 декабря 2011

SSIS - хорошее решение, но если производительность для вас наиболее важна, я постараюсь преобразовать файл Excel в простой текстовый файл и использовать BULK INSERT функциональность .

0 голосов
/ 21 декабря 2011

Если вам необходимо выполнить сложные преобразования и проверку требуемых значений, а размер файла очень велик (100 000 строк в файле Excel крошечные), SSIS может быть лучшим решением.Это очень мощный, сложный инструмент.

Тем не менее, и это большое, SSIS трудно эффективно изучать и работать, и его трудно отлаживать.Я занимаюсь импортом и экспортом, работая на полную ставку, и мне понадобилось больше года, чтобы освоиться с SSIS.(конечно, то, что я делаю с данными, очень сложно и совсем не прямолинейно, так что возьмите это с крошкой соли.) Теперь, если вы не делаете каких-либо сложных преобразований, это не так уж плохо настроить, ноон не так прост, как, например, DTS, в основном потому, что он обладает гораздо более доступной функциональностью.Если вы выполняете простой импорт без преобразований, я считаю, что другие методы могут быть более эффективными.

Что касается производительности, SSIS может сиять (он создан для перемещения миллионов или более записей в хранилища данных, где скорость критична) или быть настоящей собакой в ​​зависимости от того, как он настроен.Требуется хороший уровень мастерства, чтобы добраться туда, где вы можете настроить производительность одного из этих пакетов.

0 голосов
/ 21 декабря 2011

Регистрация ошибок - неверные строки можно легко зарегистрировать в отдельной таблице для дальнейшей проверки.

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