2015-05-18 2 views
-1

У меня есть пакет ssis, который работает ежедневно. В этом пакете ssis есть несколько выполняемых sql-задач, которые загружают данные для вчерашней транзакции. Ex.Как загрузить пакет SSIS за определенную дату

INSERT INTO Shipped 
(Div_Code, shipment_value, ship_l_id, shipped_qty, shipped_date, whse_code, 
ord_id, ship_id, ship_l_ord_l_id, Created_date) 
select ord.DIV_CODE as div_code, ship.SHIPMENT_VALUE as shipment_value, ship_l.SHIP_L_ID as ship_l_id, 
ship_l.SHIPPED_QTY as shipped_qty, ship.SHIPPED_DATE as shipped_date, ship.WHSE_CODE as whse_code, 
ord.ORD_ID as ord_id, ship.SHIP_ID as ship_id, ship_l.ord_l_id as ship_l_ord_l_id, Getdate() as Created_date 
FROM SHIP ship, ORD ord, 
SHIP_L ship_l 
WHERE ship.SHIPPED_DATE=(dateadd(day, -1, CONVERT(VARCHAR(10),GETDATE(),120))) 
and ship.WHSE_CODE='WPP' and ord.ORD_ID=ship.ORD_ID 
and ship.SHIP_ID=ship_l.SHIP_ID 

Все выполняемые задачи sql имеют запрос, подобный приведенному выше запросу. и в каком-то запросе у нас есть фильтр даты, который загружает данные за вчерашний день. Ex. один запрос имеет ship.SHIPPED_DATE = (dateadd (день, -1, CONVERT (VARCHAR (10), GETDATE(), 120))). другой запрос имеет ord.trans_date = (dateadd (день, -1, CONVERT (VARCHAR (10), GETDATE(), 120))). этот пакет работает ежедневно через SQL-сервер, поэтому он загружает данные за вчерашний день. Теперь, если я хочу работать для какой-либо конкретной даты, как мы можем добиться от ssis? Я очень новичок в SSIS. Может ли кто-нибудь помочь мне достичь этого?

Заранее благодарен

ответ

0

Вы можете запустить свой пакет, чтобы изменить дату.

INSERT INTO Shipped (Div_Code, shipment_value, ship_l_id, shipped_qty, shipped_date, whse_code, 

ord_id, ship_id, ship_l_ord_l_id, Created_date) select ord.DIV_CODE as div_code, ship.SHIPMENT_VALUE as shipment_value, ship_l.SHIP_L_ID as ship_l_id, ship_l.SHIPPED_QTY as shipped_qty, ship.SHIPPED_DATE as shipped_date, ship.WHSE_CODE as whse_code, ord.ORD_ID as ord_id, ship.SHIP_ID as ship_id, ship_l.ord_l_id as ship_l_ord_l_id, Getdate() as Created_date from SHIP ship, ORD ord, SHIP_L ship_l where ship.SHIPPED_DATE=(dateadd(day, -1, CONVERT(VARCHAR(10),GETDATE(),120))) and ship.WHSE_CODE='WPP' and ord.ORD_ID=ship.ORD_ID and ship.SHIP_ID=ship_l.SHIP_ID 

изменение GETDATE() с указанной даты в запросе и выполнения пакета

+0

Спасибо Indra, Но у меня есть 12 выполнение задачи, как это, поэтому я должен изменить везде. Вместо того, чтобы изменять запрос, мы можем достичь параметров производительности в SSIS. Предположим, мы хотим загрузить для 9-го числа. Итак, можем ли мы передать эту дату в качестве параметра? – ramu

+0

, если вы хотите передать параметр даты как переменную, тогда вы должны изменить свой sql в пакете. если вы готовы, я дам код –

+0

Спасибо Indra за ваш ответ, Да, я готов изменить, так как мой пакет должен запускаться ежедневно, но если мы хотим загрузить данные для какой-либо конкретной даты, мы сможем загрузить для этого конкретная дата также ... Спасибо .... – ramu

0

Ниже шаги, которые вы можете использовать, это очень просто

  1. Создать таблицу с одним столбцом с типом данных date
  2. Добавьте одну ExecuteSql задачи в пакете, написать запрос, чтобы добавить или обновления с getdate()
  3. Обновление существующего запроса SQL, где положение вместо

WHERE ship.SHIPPED_DATE = (DateAdd (день, -1, CONVERT (VARCHAR (10), GETDATE(), 120)))

Используйте ниже один

WHERE ship.SHIPPED_DATE=(Select column from tablename) 

Logic: по умолчанию ваш запрос получить getdate() из таблицы, но если вы обновляете т способный вручную с конкретной таблицей, которую ваш пакет будет выполнять с определенной датой Мы можем достичь этого с помощью другого способа, как использование переменной окружения, но я думаю, что процесс выше для вас.

+0

Даже вы можете достичь без добавления задачи ExecuteSQL. только вы можете создать таблицу с одним столбцом, добавить одну запись с помощью getdate() изменить предложение where с помощью таблицы запланировать свой пакет, пакет будет работать в соответствии с getdate(), поскольку таблица getdate() , когда вы запускаете конкретную дата, просто вам нужно обновить таблицу –

+0

Hi Indra, Спасибо за ваш ответ. Здесь, в моем пакете, у меня есть 12 исполняемых sql-задач, и каждая задача имеет один и тот же запрос с другим фильтром Date, а в некотором запросе нет фильтра даты. у нас есть фильтр даты, который загружает данные за вчерашний день. Ex. один запрос имеет ship.SHIPPED_DATE = (dateadd (день, -1, CONVERT (VARCHAR (10), GETDATE(), 120))). другой запрос имеет ord.trans_date = (dateadd (день, -1, CONVERT (VARCHAR (10), GETDATE(), 120))) и так далее. Так как это будет работать? Спасибо – ramu

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