Перенос консоли C# в задачу сценария SSIS

У меня есть консольное приложение С#, которое считывает данные Excel и переформатирует/очищает их. Наконец, приложение записывает данные в 2 разных файла CSV. Это консольное приложение. имеет :

  1. Program.cs — содержит метод Main.
  2. Row.cs — свойства, которые разбивают каждую строку данных на отдельные столбцы.
  3. Locations.cs - свойства для работы с локациями (данные разбиты по регионам/локациям).
  4. LocationsBuilder.cs — содержит основную логику, в которой происходит очистка и преобразование данных.

Я хотел бы перенести весь код C# в задачу сценария SSIS C#, но не уверен, как это сделать, поскольку код задачи сценария, по-видимому, использует только 1 файл для всего кода.

Я хотел бы, если это возможно, иметь весь код в 1 сценарии, чтобы он работал в задаче сценария SSIS.


person Ahpitre    schedule 04.01.2019    source источник
comment
Почему вы хотите перенести работающее консольное приложение, которое даже не ссылается на базу данных, в задачу сценария служб SSIS? Мне это не кажется хорошей идеей   -  person Nick.McDermaid    schedule 05.01.2019
comment
@Nick.McDermaid, консольное приложение считывает файл Excel, применяет специальное форматирование и синтаксический анализ и выводит результат в файл CSV. Затем файл CSV используется службами SSIS для обновления базы данных. Я объединяю 2 отдельных процесса/приложения (консольное приложение С# и решение SSIS) в 1.   -  person Ahpitre    schedule 08.01.2019
comment
Если это процесс интеграции данных, я рекомендую вам реорганизовать весь процесс, чтобы импортировать файл Excel непосредственно в базу данных (хотя это может быть сложно). Что касается нескольких классов в одном файле - это не проблема. Вам просто нужно убедиться, что точка входа соответствует ожиданиям SSIS. В первую очередь вы должны вставить все свои классы в редактор и посмотреть, что произойдет.   -  person Nick.McDermaid    schedule 11.01.2019


Ответы (2)


SSIS — это платформа для работы ETL. Вы можете архивировать Excel в формате CSV.

How to do it
1. Open Integration Services project / SQL Server Data Tools (SSDT)
2. Create a new SSIS package
3. Add data flow and add those 2 files as datasource 
4. Add control flow accordingly if you have any conditional logic in console applicaiton.
5. Add output destination as CSV ouput
6. That's it
person NativeKepler11    schedule 04.01.2019
comment
Консольное приложение анализирует и переформатирует данные в файл CSV. Часть ETL существующего решения SSIS захватывает файл и вставляет данные в базу данных. Что я хочу сделать, так это объединить функциональность обоих в 1 решение ETL. Проблема, с которой я сталкиваюсь, заключается в том, что я смог поместить весь код моего консольного приложения в задачу сценария (1 файл, ScriptMain.cs по умолчанию). Он строится без ошибок, но при запуске всегда терпит неудачу. Вставка точек останова не работает, так как кажется, что она сразу же завершается ошибкой, когда ее вызывает SSIS. Я получаю общее сообщение Задача сценария DTS обнаружила исключение в пользовательском коде:.. - person Ahpitre; 08.01.2019
comment
... Я подозреваю, что Script Task не любит иметь несколько классов в 1 файле. Я также пытался оставить код в отдельных файлах (как в исходном консольном приложении), но это даже не собирается. - person Ahpitre; 08.01.2019

Вы можете оставить свой код как есть.

В конструкторе служб SSIS добавьте компонент задачи сценария и скопируйте код всех классов внутрь сценария (Вы можете создать несколько классов в одном файле cs или добавить новые классы в проект). И скопируйте код основного метода внутри основной функции в скрипте.

Или вы можете создать библиотеку классов и использовать ее внутри кода задачи скрипта.

Полезные ссылки

person Hadi    schedule 04.01.2019