多个更新语句与单个更新/合并语句

时间:2015-12-17 11:18:16

标签: sql sql-server ssis sql-update sql-merge

我有一个Unix Shell脚本,它使用'awk'命令逐行处理平面文件并更新Oracle数据库表。它通过为每一行打印一个Update命令并将其管道到一个文件来实现这一点 -

/usr/xpg4/bin/awk 'BEGIN{FS="|"; cnt=0;} {print "update Employee set hours=hours+"$6*(1)" 
where ID="$3" and LastName="$4";"; cnt=cnt+1; if(cnt%100==0) print "commit;"; }' 
$DATA_PATH/$DATETIME/$filename | sed s/@/\'/g > $SYNC_PATH//$DATETIME/$filename

然后使用SQLPLUS运行该文件,如下所示 -

$ ORACLE_HOME / bin / sqlplus admin / pass @ word1 @ $ SYNC_PATH / $ DATETIME / $ filename

更新:我正在将所有这些迁移到Windows Server 2012 \ Sql Server 2012 \ SSIS环境。

我想将此过程转换为SSIS包。我有两个选择 -

  • 在SSIS中复制与上述相同的逻辑,即从平面文件行逐行读取,并创建一个'.sql'文件,其中包含可以使用“执行SQL任务”运行的更新语句
  • 从平面文件批量插入数据库中的Staging表,并使用Update / Join或Merge语句更新我的Target表。

哪一个是更好的选择?在两个操作完成后,目标表中的数据相同,这两个方法在功能上是否相同。

0 个答案:

没有答案