Компонент сценариев служб SSIS - PullRequest
1 голос
/ 17 января 2012

Я нашел этот фрагмент кода, который отлично работает для моего ввода (строка CSV).Пакет работает нормально, но вместо 5 выходных столбцов я получаю только 2 столбца.Я добавил дополнительные столбцы в компонент Script, а также изменил их типы данных на подходящие.Ввод 643492, PV STRIP 1X1 UTILITY UP ,, 67,5, 393446.Из всей этой строки я получаю только 643492 в одном столбце и PV STRIP 1X1 UTILITY UP в другом.Остальная часть строки выходит пустой, понятия не имею, почему.Эксперты любезно помогают.Я ничего не знаю о .net, и я новичок в SQL Server.

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
    Dim strRow As String
    Dim strColSeperator As String
    Dim rowValues As String()
    strRow = Row.Line.ToString()
    If strRow.Contains(",") Then
        strColSeperator = (",")
    ElseIf strRow.Contains(";") Then
        strColSeperator = ";"
    End If

    rowValues = Row.Line.Split(CChar(strColSeperator))
    Row.Code = rowValues.GetValue(0).ToString()
    Row.Description = rowValues.GetValue(1).ToString()

End Sub

1 Ответ

1 голос
/ 17 января 2012

Похоже, что вы присваиваете только первые два значения строке буфера. Последние две строки вашего фрагмента кода - это то место, где выполняется назначение. Ваш массив rowValues должен содержать 5 значений на основе Split() на строке, которую вы указали в своем примере. Вы можете назначить их, используя метод GetValue(index). Сделайте это для индексов с 3 по 5 вашего массива.

Строковые значения идут так же, как указано выше:

Row.FieldName = rowValues.GetValue(0).ToString()

где Code - это имя поля, а 0 - нулевой индекс значения в массиве.

Для целого числа вы можете сделать что-то вроде:

Row.FieldName = Convert.ToInt32(rowValues.GetValue(3))

Вы можете использовать другие Convert методы для преобразования в желаемый тип вывода. См. MSDN для справки.

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