2016-02-06 6 views
1

На моей работе я столкнулся со следующей проблемой: sql или t-sql очень медленны, если мы будем манипулировать большим количеством данных. Я имею в виду миллионы или миллиарды строк и эти способы (когда вам нужно использовать во время внутри или рекурсии в рекурсии) SSMS (MS SQL) не работает быстро (я также пробовал индексы и многие другие sql-подсказки). Я знаю, что другие языки программирования работают быстрее - теперь я пытаюсь передать данные из sql в C# (используя SSIS sql и скриптовые задачи) или Java (NetBeans). Не могли бы вы помочь мне и поделиться любыми функциями о том, как передать переменную объекта, которая была обновлена ​​в задачах сценария SSIS для задачи sql (insert). Я не знаю в SSIS, но 70% моего опыта там построено DWH, я использовал сценарий как раз для messege box в прошлый раз.Передача обновленных объектов в SSIS

Я знаю, что нам нужно получить наш массив (таблицу) из sql в sql-задаче и передать его объекту varialbe. Второй шаг - обновление данных в задаче скрипта. В-третьих, чтобы получить объект с шага 2 и вставить в sql обновленные данные. Не могли бы вы помочь мне со 2-м и 3-м шагами? Как создать выходную переменную в задаче сценария C# (например, у нас есть таблица с 1 столбцом и хотите увеличить все значения до 1) и перейти к следующему блоку SSIS?

Я хочу, чтобы описать этот пример больше:

  1. Мы таблица с 1 столбец с именем I и значение 0;
  2. Мы передаем значение из таблицы в полный набор результатов (задача sql);
  3. Как внести изменения в задачу сценария C# и вернуть новое значение переменной, которое мы получили с предыдущего шага?

Спасибо.

+0

В чем проблема, которую вы пытаетесь решить? – billinkc

+0

Я хочу передать таблицу как полный набор результатов из задачи sql в задачу скрипта. В задании скрипта я хочу манипулировать данными переменной объекта и перемещать обновленный объект (столбцы таблицы) в другую задачу sql. Я знаю, как сделать первый шаг, но не знаю, как переносить обновленную переменную объекта из задачи сценария в другую задачу sql в SSIS. – Joger

ответ

0

Создайте новую переменную типа Object. Используйте задачу потока данных, чтобы отправить данные в переменную целевого объекта и передать эту переменную в задачу сценария. Объект может быть приведен к DataTable типа в задаче сценария следующим образом:

var data = (DataTable)Dts.Variables["User::MyHugeDataSet"].Value; 

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

+0

Sql слишком медленный, когда мы работаем с большими массивами при условии. Я имел в виду обновленные данные в задаче сценария C#, а затем вставлял значения в задачу sql в конструкцию «вставлять в значения db.dbo.table (?,?,? И т. Д.)» Из компонента скриптов C#. Просто хотел реализовать это в SSIS. – Joger