SSIS Преобразование char в логическое/бит

У меня есть пакет SSIS для загрузки данных; как вы помните, есть флагов, которые находятся в файлах данных как Y/N char (1), когда я пытаюсь загрузить их как битовые флаги в SQL Server. Я указываю столбцы в файле данных как String [DT_STR], и у меня есть задача преобразования данных, чтобы преобразовать их в booleans на основе следующего выражения (я получил ту же ошибку преобразования, которая просто указала их как DT_BOOL, несмотря на то, что SSIS спрашивает меня сказать, какие значения он должен учитывать как логические):

[ColumnName] == "Y" ? (DT_BOOL)1 : (DT_BOOL)0

Запуск пакета дает ошибку и сообщает мне Invalid character value for cast specification и The value could not be converted because of a potential loss of data о фактическом импорте на SQL Server (через назначение OLE DB).

Что мне здесь не хватает, чтобы заставить его правильно конвертировать?

Ответы

Ответ 1

Мне удалось решить его, используя производный столбец и вместо замены столбцов char, создав новые столбцы, заданные для типа DT_BOOL следующим образом:

[Recycled] == "Y" ? True : False

Ответ 2

Попробуйте следующее:

(DT_BOOL)([ColumnName] == "Y" ? 1 : 0)

Это также имеет преимущество автоматического правильного выбора типа данных производного столбца.

Ответ 3

У меня была та же проблема с

(DT_BOOL) ([ColumnName] == "Y"? 1: 0)

и я мог только заставить его работать, выведя часть "(DT_BOOL)" из выражения и поставив задачу преобразования его в логическое на части "Тип данных", выбрав "Boolean [DT_BOOL]". После этого проблем нет.