Как удалить управляющие символы из импорта DTS / SSIS? - PullRequest
0 голосов
/ 28 июня 2010

Компания, в которой я работаю, имеет много систем, в которых исходные данные создаются в виде простого файла или книги Excel.Затем эти файлы импортируются с использованием DTS в базу данных SQL Server.

Довольно часто эти файлы содержат различные управляющие символы (например, я только что провел час, обнаруживая, что в некоторых записях есть \0, что, по-видимому,SAP любит дополнять вещи), которые в идеале мы хотели бы удалить, прежде чем они попадут в нашу базу данных.

Я не использовал DTS / SSIS так сильно, но я подумал, что в них должно быть что-то ужеили, по крайней мере, лучшую практику санитарии, которую я должен использовать?

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

Ответы [ 3 ]

1 голос
/ 28 июня 2010

Я могу говорить только исходя из своего опыта работы с SSIS, поэтому я прошу прощения, если это будет лишь незначительно полезным.

С точки зрения общей санитарии, я не сталкивался с каким-либо целевым компонентом дляэта работа.Я предполагаю, что это связано с тем, что разные сценарии могут иметь совершенно разные определения «плохих данных», но такие вещи, как удаление непечатных символов, могут быть обычным бизнес-требованием, так что это несколько удивительно.

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

Так что в подобных случаях я лично считаю, что лучшим вариантом является объединение ваших общих процедур санитарии в настраиваемый компонент потока данных .Мы разработали один для себя, чтобы обрабатывать некоторую очень распространенную логику проверки данных, и настроить редактор компонентов так, чтобы вы могли выбирать флажки для включения тех проверок, которые вы хотели применить к данному столбцу.Тогда это просто становится вопросом перетаскивания и подключения вашего потока данных.По крайней мере, для нас определенно стоило потратить время на разработку компонента.

Я не знаю, что DTS предлагает в этом отношении (я думаю, что он довольно ограничен или, по крайней мере, не дружелюбен, но я мог быошибаться), так что это, вероятно, не полезно для ваших старых пакетов.Я чувствую, что решение Кейда, вероятно, было бы наиболее свободным от стресса в этом случае, при условии, что оно осуществимо для ваших входных данных.

Что касается общего понимания SSIS, я нашел блоги Джейми Томсона (ранее здесь ) очень полезно, поэтому вы можете проверить, не обсуждал ли он эту конкретную тему раньше.

В любом случае, надеюсь, это было хотя бы немного полезно, иудачи в решении проблемы.

На заметку : Слава за то, что вы захотите очистить ваши данные перед тем, как поместить их в вашу базу данных.Мы получаем данные от конкретного поставщика, который не никогда не очищает свои данные, а затем пытается отправить их в XML, чтобы отправить их нам через веб-сервис.Излишне говорить, что синтаксический анализатор XML не слишком любит непечатные символы.

0 голосов
/ 14 июля 2010

В зависимости от ваших потребностей, вы также можете сделать следующее:

  1. Импортировать данные (через SSIS / DTS) в «промежуточную» таблицу в вашей БД
  2. ЕстьТаблица 'sanitize' в вашей БД, содержащая (для каждой строки) любую строку, которую вы хотите удалить (или заменить чем-то другим).В этой таблице могут быть дополнительные столбцы для разных сценариев, конечно
  3. Используйте курсоры для просмотра таблиц и очистки.
0 голосов
/ 28 июня 2010

Если определенные символы всегда можно просто заменить / удалить, то мы обычно выполняем этот предварительный импорт с помощью специальной программы на Си.Это, очевидно, не работает для двоичных файлов или чего-либо другого со столбцами индикатора длины столбца переменной длины или EBCDIC и т. Д., Но когда это можно использовать, его можно применять независимо от инструмента импорта.

...