2013-10-03 4 views
0

Я пытаюсь собрать воедино C# сценарий в SSIS сделать шаги:SSIS C# Задача сценария очистить SQL записей

  1. Установить соединение SQL Server
  2. Либо прочитать все содержимое SQL Server в DataTable или обрабатывать по строке за строкой и экспортировать в новую таблицу (не уверены, какой метод использовать ....)
  3. Поиск по каждому столбцу в строке, и если эта строка имеет длину от 1 и имеет значение '-', замените тире на NULL. Ключевыми здесь являются то, что я не хочу объявлять имена каждого столбца.
  4. Затем записывайте записи обратно в другую таблицу SQL Server.

Я новичок в C#, поэтому я ищу самый простой способ сделать это.

Спасибо!

+3

Добро пожаловать в StackOverflow, как новый член нашего сообщества, пожалуйста, прочитайте [About] (http: // stackoverflow .com/about), чтобы вы лучше почувствовали, что такое StackOverflow, и как правильно задать вопрос здесь. Измените свой вопрос, чтобы показать нам, что вы пробовали, с некоторыми фрагментами кода. – Malachi

+2

Если вы используете SSIS, это также можно сделать как {EXECUTE SQL TASK}, так как я не вижу ничего, что вы указали, как только C# может делать (так как вы ** новый ** на C#). – Question3CPO

+0

Для того, что вы описываете, вы не используете SSIS так, как должно быть. Ваш подход, действительный для .NET-приложения или библиотеки, не использует SSIS для выполнения того, для чего он предназначен. – billinkc

ответ

1

службы SSIS подход к делать то, что вы описываете

  1. Добавить диспетчера соединений OLE DB к пакету, который указывает на исходный сервер
  2. Добавление задачи потока данных на Contro Flow
  3. Написать a SELECT, который отбрасывает столбцы, соответствующие вашим критериям. SELECT col1, col2 FROM dbo.MyTable T WHERE T.col1 = '-' OR T.col2 = '-'; Фактическая реализация может отличаться. Поместите этот запрос внутри OLE DB Источник компонентов
  4. Добавить Производный компонент колонки, чтобы включить - в значение NULL
  5. Добавить назначения OLE DB для записи в новую таблицу

Однако еще лучше подход должен состоять в том, чтобы не хранить эти данные как таковые и сохранять их чистыми, прежде чем приступать к нему в своей таблице. Если учесть это, я бы, вероятно, посмотрел на использование задачи Execute SQL Task, чтобы запустить запрос для очистки данных на сервере. Нет необходимости выполнять обработку строк за строкой. Вы описываете набор (все с длиной 1 и значением -), поэтому исправьте набор (UPDATE T SET col1 = NULLIF(Col1, '-'), ... FROM dbo.MyTable T)

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