2016-06-30 3 views
0

Я поддерживаю проект интеграции интеграции BIDS, который был создан предыдущим сотрудником. К сожалению, у меня нет опыта работы с BIDS.Программно изменить типы данных столбцов?

Процесс берет информацию из плоского файла (серии CSV) и импортирует их в нашу базу данных. Клиент, который предоставляет данные, недавно переключился на предоставление данных Unicode, поэтому мне нужно обновить проект интеграции, чтобы это учесть. Текущий поток данных BIDS возвращает ошибку проверки для каждого столбца: «Невозможно преобразовать типы данных Unicode и не-Unicode».

Проблема: похоже, я могу это сделать, обновив диспетчер соединений с плоскими файлами, но у меня есть несколько сотен полей, которые необходимо изменить. Есть ли способ сделать это программно? Вручную изменить все настройки этих столбцов займет много времени и будет утомительным.

вещей я попытался:

  • я мог бы использовать производное преобразование столбца подавать каждый столбец из DT_STR в DT_WSTR. Однако для этого необходимо слишком много столбцов. И похоже, что мне нужно будет указать длину для каждого столбца, что является хором.
  • Я также мог бы использовать преобразование преобразования данных, но снова мне пришлось бы вручную щелкнуть каждый столбец, выполнить поиск по списку типов данных и выбрать тот, который я хочу.
  • Текущая попытка: Я пытаюсь использовать компонент скрипта.
+0

Что все задачи потока данных ar там –

+0

Существует источник плоского файла и пункт назначения ole db. Ошибки направляются в другой плоский файл (место для плоского файла). – indigochild

+0

Вы хотите сказать, что вам нужно изменить тип данных из нескольких сотен полей в диспетчере соединений для поддержки UTF-8? – DBA

ответ

0

Самый простой способ сделать это не был программным. BIDS позволяет просматривать и редактировать XML, лежащий в основе проекта.

Чтобы просмотреть или изменить этот XML, перейдите по ссылке -> Код.

Поскольку я хотел заменить все типы данных STR на типы данных WSTR, совместимые с Unicode, я просто выполнил поиск-замените на XML. Я заменил dataType = "str" ​​на dataType = "wstr" и codePage = "65001" с кодомPage = "0".

1

Вам нужно сделать три + изменения: два + внутри SSIS и один в вашей базе данных.

У SSIS будет Flat File Connection Manager, что вам нужно изменить все экземпляры типа AnsiString как String.

Затем любые Data Flow Tasks, у которых есть файл с плоским файлом, который ссылается на измененный диспетчер соединений с файлами, затем необходимо обновить, чтобы исправить свои метаданные.

Тогда любые асинхронные компоненты в пакете SSIS, вероятно, необходимо будет отрегулировать, поскольку они могут не подхватить изменение метаданных.

Наконец, вам нужно обновить таблицы целевой базы данных, чтобы перейти от типа данных varchar к nvarchar. В противном случае SSIS не будет проверять правильность адресата вместо источника, который вы сейчас испытываете.

Я немного поработал с SSIS из программного интерфейса, я не завидую вам перед вами заданием. В то время как вы могли бы использовать задачу скрипта для проверки пакета SSIS, а затем изменить его, вам лучше всего использовать выделенное приложение console/winform для выполнения этой манипуляции. Хотя это один и тот же отладчик либо в SSIS, либо в отдельном приложении, цикл отладки Debug-> Change-> Restart намного проще без запуска пакета SSIS, а затем при открытии задачи сценария для отладки.

Смежные вопросы