#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
таблицу.
- скриншот DFD: источник — это ТЕСТ, а назначение — Test1
После запуска этого пакета получаем вывод ниже в таблице 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
inSource Assistant
и явном преобразовании бита, поданного в int :convert(int, IsDeleted)
. Я протестировал его, и он работает.5. @M.Mohabbati Я протестировал это, и это работает.