Фильтрация значений данных в одном столбце на основе другого столбца, а затем вставка значений в разные столбцы в одной и той же таблице SQL

Это немного загадка, которую я пытаюсь решить с помощью SSIS и преобразования условного разбиения. У меня есть файл.csv, который содержит данные атрибутов в одной строке для каждого уникального пользователя и значения для каждого атрибута в другом столбце. то есть:

Attribute, Attribute Type

ID, 0000000001

Birthdate, 09/02/1976

Role, Manager

Или что-то в этом роде. Мне нужно разделить атрибуты на столбцы, которые включают данные типа атрибута. Таким образом, желаемый результат будет:

ID,                    Birthdate,              Role,

0000000001,             09/02/1976,            Manager,

Затем мне нужно вставить их в одну таблицу SQL с новыми столбцами.

Мне удалось это прекрасно выполнить с помощью преобразования условного разбиения для одного столбца (например, с помощью выражения Attribute == "ID" и последующего сопоставления всего столбца Attribute в источнике.csv со столбцом ID в таблице назначения SQL). но проблема заключается в том, чтобы сделать это для других столбцов. Кажется, я не могу заставить трансформацию Союза Всех делать то, что я хочу.

Любой совет?

1 ответ

Решение

Вы можете добиться этого, используя компонент скрипта:

  1. Добавить компонент скрипта
  2. Перейти на вкладку Входы и выходы
  3. Добавить 3 выходных столбца: идентификатор, дата рождения, роль
  4. Установите для свойства SynchronousInput значение None

  1. Внутри редактора скриптов напишите похожий скрипт:
string ID = "";
string BirthDate = "";
string Role = "";
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
   if(!Row.Attribute_IsNull && !String.IsNullOrWhiteSpace(Row.Attribute))
    {

        switch (Row.Attribute)
        {

            case "ID":
                ID = Row.AttributeType;
                break;

            case "BirthDate":
                BirthDate = Row.AttributeType;
                break;

            case "Role":
                Role = Row.AttributeType;

                Output0Buffer.AddRow();
                Output0Buffer.ID = ID;
                Output0Buffer.Role = Role;
                Output0Buffer.BirthDate = BirthDate;

                break;
            default:
                break;
        }
    }
}
  1. Сопоставьте столбцы вывода с назначением OLE DB
Другие вопросы по тегам