Можем ли мы привести тип данных string или char к int (или числовому) в SSIS? - PullRequest
4 голосов
/ 20 марта 2019

Я считаю это немного сложным. У меня есть исходная таблица и таблица назначения.

Исходная таблица содержит один столбец с типом данных char длиной 2. Таблица назначения содержит один из столбцов с типом данных int.

Задача - перенести данные из источника в пункт назначения с помощью пакета служб SSIS. И в этом процессе я использую производное преобразование столбцов для обработки этого преобразования.

Столбец в исходной таблице имеет значение «01», «02» или «03». Принимая во внимание, что столбец назначения, имеющий тип данных int, не может быть сопоставлен с исходным столбцом. Поскольку int только распознает «1». Я хочу только 1 или 2 или 3 и опустить 0 в столбце назначения.

Я попробовал несколько вещей, как показано ниже.

Попробуйте № 1:

SUBSTRING(COLNAME, 2, 1)

Это дает мне "1" от "01", но когда я делаю

(DT_R4) SUBSTRING(COLNAME, 2, 1 )

Это меня полностью подводит.

Попробуйте №2:

Я пытаюсь разыграть, как показано ниже.

(DT_DECIMAL, 2)(DT_R4) SUBSTRING(COLNAME, 2, 1 )

Это не сработало.

Если есть выход, я ценю любое направление здесь.

Ответы [ 2 ]

2 голосов
/ 21 марта 2019

Поскольку целевой столбец имеет тип Integer DT_I4, то в производном столбце следует использовать следующее выражение:

(DT_I4)[SourceColumn]

Также проверьте для Null s и пустых строк:

ISNULL([SourceColumn]) ? NULL(DT_I4): ([SourceColumn] == "" ? NULL(DT_I4): (DT_I4)[SourceColumn])
1 голос
/ 21 марта 2019

Вы пытались напрямую соединить исходный и целевой столбцы без преобразования данных или преобразования производного столбца? Я думаю, что он должен неявно преобразовывать из char в Integer, если все данные в исходной таблице являются числами, хотя тип данных char.

...