1

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

/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 任务”运行该文件
  • 将平面文件中的批量插入到数据库上的暂存表中,并使用更新/加入或合并语句来更新我的目标表。

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

4

0 回答 0