Как я могу создать столбец, используя компонент скрипта в SSIS?

У меня следующая ситуация: мне нужно создать проект в SSIS для импорта некоторых данных из csv в нашу систему, но для этого я должен прочитать некоторые столбцы, и один из этих столбцов является «группой» значений. Значения горизонта планирования, и этот горизонт может изменить каждый процесс, поэтому один процесс может длиться 5 месяцев, а другой 15 месяцев.

Файл (csv) всегда будет заполнен 21 столбцом, но после (22, 23...) я не знаю, есть ли 1, 2 или более столбцов (горизонт).

И в этой ситуации я не могу создавать столбцы в «Вводе и столбцах» из редактирования преобразования сценария, мне нужно создавать на основе длины горизонта.

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

С Уважением


person Gabriel Castro Fernandes    schedule 13.12.2016    source источник
comment
Краткий ответ: нет, вы не можете создавать столбцы во время выполнения в SSIS. Если количество столбцов в месте назначения изменится, вам потребуется обновить метаданные. В качестве альтернативы вы можете использовать назначение COMMAND для запуска оператора INSERT или Stored Proc для каждой строки, но это убьет вашу производительность.   -  person Raj More    schedule 13.12.2016


Ответы (3)


SSIS так не работает. Количество столбцов задается во время разработки.

Если вы можете установить разумный верхний предел — скажем, 50 столбцов, вы можете прочитать последний «столбец» данных, а затем проанализировать его с помощью компонента сценария в этих полях. В противном случае вы рассматриваете предварительную обработку файла, чтобы развернуть строки переменной ширины в нормализованный набор.

person billinkc    schedule 13.12.2016

Вы можете сделать это двумя разными способами.

  1. Добавить столбцы в компонент скрипта https://msdn.microsoft.com/en-us/library/ms188192.aspx

  2. Добавьте преобразование производного столбца и добавьте настраиваемый столбец с соответствующим выражением.

person Techfritters    schedule 13.12.2016
comment
Это ответило на мой вопрос, который привел меня к этому сообщению. Как добавить столбец с помощью компонента скрипта. Просто нужно добавить столбец в Output0. В методе Input0_ProcessInputRow присвойте нужное значение столбцу. Мне специально пришлось создать строку, которая была слишком сложной для выполнения в sql. - person gwgeller; 13.12.2017

Спасибо за все ответы. Я изменил свое видение, чтобы создавать другие. Я использую трансформацию скрипта для проверки:

  1. сколько столбцов мне нужно было создать;
  2. открыть соединение и удалить столбцы горизонта;
  3. снова создать столбцы на основе нового горизонта;

После того, как я включил задачу Execute Sql для вызова процедуры, выполняющей всю логику для заполнения столбцов.

С уважением,

person Gabriel Castro Fernandes    schedule 14.12.2016