Так что в настоящее время я работаю над миграцией со старого сервера базы данных Advantage на SQL 2005 с использованием SSIS 2008. Один из столбцов в старой базе данных Advantage имеет тип MEMO.По умолчанию это переводится в столбец DT_TEXT.Что ж, в новой базе данных мне не нужно это большое поле, но я могу ограничить его чем-то вроде VARCHAR (50).Я успешно настроил преобразование производного столбца, чтобы преобразовать его следующим выражением:
(DT_STR,50,1252)[ColumnName]
Теперь я хочу пойти дальше и заменить все значения NULL пустой строкой.Это может показаться достаточно легким, если использовать выражение ISNULL([ColumnName])?"":(DT_STR,50,1252)[ColumnName]
, но проблема в том, что пункт назначения OLE DB содержит следующую ошибку
Невозможно преобразовать строки unicode и unicode ...
Таким образом, очевидно, что все выражение ISNULL преобразует тип данных в строку Unicode [DT-WSTR].Я пробовал различные приведения к целому выражению или различным частям, но я не могу заставить тип данных соответствовать тому, что мне нужно.
Во-первых, возможно ли преобразовать тип DT_TEXT непосредственно в Юникод?Из того, что я могу сказать, слепки не работают таким образом.Если нет, есть ли способ заставить выражение работать так, чтобы значения NULL преобразовывались в пустые строки?
Спасибо за вашу помощь!