Контейнер цикла по каждому элементу для задачи потока данных

Я хочу импортировать почти 12 миллионов записей из базы данных Oracle, но из-за проблемы буфера памяти служб SSIS мне нужно повторять мою задачу потока данных для каждого года, то есть с 2005 по 2012 год (7 раз). Как я могу использовать foreach мой запрос оракула для извлечения данных за год?

запрос

SELECT * FROM EMP_RECORDS_DETAILS WHERE to_char(JOIN_DT,'YYYY')=2005

 rvphx14 июн. 2012 г., 00:23
Если вы знаете свой диапазон дат, зачем вам нужен каждый контейнер цикла? Не могли бы вы просто сделать что-то вроде select * из таблицы, где DATEPART (YY, JOIN_DT) & gt; & APOS; 2005 & APOS; ??

Ответы на вопрос(1)

Решение Вопроса

используя Sql Server. Так что единственное, что вам нужно изменить, это запрос Select

First Create a variable to store the date for each year .

 Name: TimeValue  DataType=Int32

Use a ForEach Loop and select Foreach Item enumerator in the collection tab

New Column

Click on the Columns tab and create a new column of datatype int

In the variable mapping map the variable created above .

Mapping

Inside the dataflow use an oledb destination and in the data access mode select sql command .The query in the where clause should be changed and try to select the columns instead of giving *.

SQL Query

Click on the parameters tab map the parameter created for the foreach loop

Mapping Paramters

В случае, если значения даты не известны ранее, вы можете использовать задачу «Выполнить sql» перед циклом foreach, выбрать только значения столбца dateTime из таблицы и сохранить их в переменной, а в цикле foreach использовать Foreach из перечислителя переменной в коллекции. и выберите переменную, созданную в вышеупомянутой задаче sql execute.

Надеюсь, это поможет вам.

 14 июн. 2012 г., 00:25
Я не думаю, что это хорошая идея, если вы не хотите хранить все 12 миллионов записей в памяти.
 14 июн. 2012 г., 17:17
Подход к загрузке 12 миллионов записей с использованием этого метода - больше ненужной работы. Какова логика загрузки каждый месяц / год одновременно? SSIS будет обрабатывать только тот объем данных, который он может хранить в своем буфере. Если это не может, это не означает, что это потерпит неудачу. Он просто будет ждать, пока буфер не будет очищен, чтобы он мог загрузить новые данные. Как вы думаете, почему использование контейнера для каждого цикла является эффективным & apos;
 Pratik14 июн. 2012 г., 09:12
@Rajiv: Вы когда-нибудь сталкивались с такой ситуацией для импорта большого количества записей. Как вы думаете, есть ли подход к этому подходу.
 Pratik13 июн. 2012 г., 09:14
Спасибо Правин. Я думаю, что должно работать. Я изменяю свой пакет согласно вашему предложению
 14 июн. 2012 г., 03:22
Здесь я не храню записи в памяти. В вопросе у OP проблема с памятью служб SSIS, поэтому он зацикливается на цикле FOREACH для обработки набора записей одновременно.

Ваш ответ на вопрос