Задача преобразования данных SSIS выдает неверный вывод, когда исходный тип данных БИТ

#sql-server #ssis #type-conversion #data-conversion #msbi

#sql-server #ssis #преобразование типов #преобразование данных #msbi

Вопрос:

Я создал две таблицы из приведенного ниже сценария:

 CREATE TABLE Test (ISDELETED BIT)

CREATE TABLE Test1 (ISDELETED INT)
 

Тестовые данные таблицы:

введите описание изображения здесь

Здесь тип данных столбца isdeleted в таблице test BIT , а в таблице test1 — тип INT данных. Итак, теперь, используя SSIS, я пытаюсь загрузить данные из test таблицы в Test1 таблицу.

  1. скриншот DFD: источник — это ТЕСТ, а назначение — Test1

введите описание изображения здесь

  1. Преобразование бита в int введите описание изображения здесь
  2. Сопоставление преобразованного столбца с назначением введите описание изображения здесь

После запуска этого пакета получаем вывод ниже в таблице Test1:

введите описание изображения здесь

Таким образом, в качестве вывода я получаю данные -1 вместо 1.

Я думаю, что это ошибка SSIS. Если у кого-нибудь есть решение вышеуказанной проблемы, пожалуйста, помогите.

Ответ №1:

По-видимому, именно так SSIS преобразует бит в int. Одним из решений было бы добавить производный столбец с выражением:

 ISDELETED == True ? 1 : 0
 

Комментарии:

1. @M.Mohabbati Это правильный синтаксис выражения SSIS. docs.microsoft.com/en-us/sql/integration-services/expressions /.

2. вы правы, и синтаксис в порядке. это была моя вина, и я удаляю ее. но ваш ответ меня не устраивает. вы его тестировали?

3. Ваш подход — это альтернатива, и вы не отвечаете на вопрос. Проблема заключается в выводе бита преобразования в int, который возвращает -1 вместо 1.

4. Другой подход заключается в использовании SQL Command in Source Assistant и явном преобразовании бита, поданного в int : convert(int, IsDeleted) . Я протестировал его, и он работает.

5. @M.Mohabbati Я протестировал это, и это работает.