SSIS Преобразование символа в логическое значение / бит - PullRequest
13 голосов
/ 16 февраля 2009

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

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

Ответы [ 3 ]

17 голосов
/ 17 февраля 2009

Попробуйте это:

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

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

11 голосов
/ 17 февраля 2009

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

[Recycled] == "Y" ? True : False
0 голосов
/ 05 июня 2009

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

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

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

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