我们希望使用SSIS从Oracle导入数据到SQL服务器 我能够将数据从Oracle传输到SQL中的一个表(Staging)。然后我需要转换数据,我发现我需要运行存储过程来将数据从Staging转换为Actual生产数据。但我想知道我们怎么做。
编辑#1
SourceFeatureID
,DestincationFeatureID
类似第二表存储SourcePID
,DestincationPID
SourceDate
> LastUpdated_destination_date
答案 0 :(得分:1)
OLEDB源:从登台表读取,您可以使用SQL命令仅返回包含SourceDate>的数据。目的地日期
SELECT * FROM StaggingTable T1 WHERE CAST(SourceDate as Datetime) > (SELECT MAX(DestDate) FROM DestinationTable)
OLEDB目的地:将数据插入到生产数据库
我发现我需要运行存储过程来将数据从分段转换为实际生产数据
这不是真的,您可以使用DataFlow Task
执行数据传输。
有许多链接可以找到详细的解决方案:
无论如何,要从SSIS执行存储过程,您可以使用Execute SQL Task
其他信息:
答案 1 :(得分:0)
我不打算通过你的评论。我将发布一个将StagingTable
加载到TargetTable
的示例,其中包含日期转换的示例,以及使用映射表的示例。
此代码创建存储的proc
CREATE PROC MyProc
AS
BEGIN
-- First delete any data that exists
-- in the target table that is already there
DELETE TargetTable
WHERE EXISTS (
SELECT * FROM StagingTable
WHERE StagingTable.SomeKeyColumn = TargetTable.SomeKeyColumn
)
-- Insert some data into the target table
INSERT INTO TargetTable(Col1,Col2,Col3)
-- This is the data we are inserting
SELECT
ST.SoureCol1, -- This goes into Col1
-- This column is converted to a date then loaded into Col2
TRY_CONVERT(DATE, ST.SourceCol2,112),
-- This is a column that has been mapped from another table
-- That will be loaded into Col3
MT.MappedColumn
FROM StagingTable ST
-- This might need to be an outer join. Who knows
INNER JOIN MappingTable MT
-- we are mapping using a column called MapCol
ON ST.MapCol = MT.MapCol
END
此代码运行您刚刚创建的存储过程。在SSIS包中的数据流之后,将其置于执行SQL任务中:
EXEC MyProc
关于日期转换,请参阅此处了解编号样式: