将源表中的数据加载到多个表中

时间:2017-10-21 20:22:35

标签: sql-server sql-server-2016

我有一个名为table1的源表,每晚都会使用新数据填充。我必须在4个关系表tblCus, tblstore, tblEmp, tblExp中上传数据。我应该使用存储过程或触发器来实现吗? 谢谢

2 个答案:

答案 0 :(得分:0)

在SQL Server中,总是有多种方法可以对猫进行换肤。根据您的问题,我假设您正在将OLTP样式数据库中的4个表异常化为数据仓库样式应用程序中的单个维度。

如果数据库位于不同的实例上,或者只需要简单的转换,则可以使用SSIS(SQL Server Integration Services)。

如果这是正确的,并且数据库驻留在同一个实例上,那么您可以使用存储过程。

如果转换是较大负载的一部分,那么您可以组合这两种方法,并使用SSIS来协调转换,但只需在控制流中调用存储过程。

我使用的一般规则,决定是否应该使用数据流或存储过程进行特定转换:数据流是我的预设,但如果我需要在数据流中进行任何异步转换,我恢复到存储过程。这个通用规则USUALLY提供了最佳的性能配置文件。

我会避免触发器,特别是如果对4个表进行大量DML操作,因为触发器将针对每个修改触发,并可能导致性能下降。

答案 1 :(得分:0)

如果是简单加载,您可以使用DataFlow Tasktable1.中选择

  

假设table1是4个表的源表。

然后你可以使用Conditional split task,它就像一个where子句,你可以在其中设置tblCus, tblstore, tblEmp, tblExp的定义,然后为这些添加4个目的地。

看看我的例子: Entire package

条件分割: Conditional split