Итак, в настоящее время я работаю над переходом со старого сервера базы данных 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 непосредственно в Unicode? Насколько я могу судить, слепки так не работают. Если нет, есть ли способ заставить выражение работать так, чтобы значения NULL преобразовывались в пустые строки?
Спасибо за вашу помощь!