Я создаю пакет, в который я буду экспортировать данные из базы данных в пустой файл Excel. Когда я добавил только исходный и целевой компоненты и запустил пакет, я получил ошибку преобразования, в которой указано, что столбец вывода и столбец «A» не могут преобразовывать строковые типы данных в Юникоде и не в Юникоде.
Чтобы это исправить, я добавил компонент преобразования данных и преобразовал все столбцы в
"Строка Unicode [DT_WSTR]"
и я больше не получил ошибку. Единственная проблема состоит в том, что у меня было около 50 столбцов, где мне нужно было перейти 1 на 1 и выбрать «Unicode String [DT_WSTR]» из выпадающего списка. Затем мне нужно было перейти к компоненту назначения и сопоставить недавно преобразованные столбцы с моим файлом Excel.
Мой вопрос: если кто-то еще сталкивался с этим, есть ли более эффективный способ обойти все ручные преобразования типов данных? Необходимость конвертировать и отображать все столбцы один за другим не кажется практичной, особенно если у вас большое количество строк.
Я понимаю, что файлы Excel - не лучший способ импорта и экспорта данных, но это то, что требуется в данном конкретном случае.
Я мог бы найти способ просто экспортировать в плоский текстовый файл, а затем попытаться преобразовать в Excel в качестве последнего шага в пакете. Я думаю, что это не вызовет ту же ошибку преобразования Unicode / Nonunicode.
источник
Ответы:
В качестве альтернативы RDC, я бы просто пропустил преобразование типов данных в SSIS и явным образом приводил их как nvarchar в моем исходном запросе.
Применение
В исходном запросе (и вы будете с помощью запроса источника и не просто выбрать таблицу из выпадающего списка), явно привести вещи в соответствующем п (вар) длину полукокса.
Вместо
используйте запрос, такой как
Проницательные студенты AdventureWorks признают, что данные уже были
n(var)char
типом, но это было просто для демонстрации концепции.Льготы
Data Conversion Component
SSIS.источник
CONVERT
должно быть легче вставить в 50 раз, чемCAST
, поскольку аргументы впередиПо сути, нет никакого способа сделать это. Но вы можете скачать - Замена компонента преобразования данных для служб SSIS из Codeplex и сделать это за один раз.
Более подробную информацию можно найти здесь .
источник
Если вам нужно только изменить «Строка Unicode (DT_WSTR)» на «Строка (DT_STR)» или наоборот, то вы можете сделать это:
Поиск строки,
DTS:DataType
если за ней следует "130", тогда столбец определяется как DT_WSTR (Unicode).Если за ним стоит = "129", тогда столбец определяется как DT_STR (не в Юникоде), используйте поиск и замену с осторожностью (вы делали копию раньше, не так ли?)
Сохраните файл и, возможно, это все.
источник