SSIS处理导入数据——存在的更新, 不存在的插入

11 篇文章 50 订阅 ¥19.90 ¥99.00
  •  将文件中的数据导入数据库时,需要判断数据库表中已存在该数据的话,将数据更新;不存在的话,增量插入
  • 工具:SQL Server ,Microsoft SQL Server Management Studio ,Visual Studio (SSDT)

下图为上传数据的SSIS流程包,下面分步阐述

 

 

首先,在数据库中新建两张表,临时表:[IMP_DJ],正式表:[DJ]

注意:字段与待上传的文件字段一致

USE [Test]
GO

/****** Object:  Table [dbo].[DJ]    Script Date: 2020/3/27 16:55:58 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[IMP_DJ](
 [A] [nvarchar](255) NULL,
 [B] [nvarchar](255) NULL,
 [C] [nvarchar](255) NULL
) ON [PRIMARY]
GO


CREATE TABLE [dbo].[DJ](
 [A] [nvarchar](255) NULL,
 [B] [nvarchar](255) NULL,
 [C] [nvarchar](255) NULL
) ON [PRIMARY]
GO

 打开SSDT工具,新建一个SSIS项目

 

将执行SQL任务拖入控制流面板中,Connection连接上数据库,更改Name名称

SQL Statement中写:

truncate table IMP_DJ 

目的是清空临时表[IMP_DJ]

再拖入一个Foreach循环容器,将前面的执行SQL任务与循环容器用蓝色箭头连上

双击打开循环容器,在常规中更改容器的名称

 

在集合中选择Foreach 文件枚举器,枚举器配置中选择待上传文件的文件夹位置

在变量映射中新建变量,值为待上传文件所在文件夹位置

 

然后将数据流拖入循环容器中,双击进入数据流控制面板。在数据流面板中拖入excel源和OLE DB目标

 

excel源中新建Excel连接管理器,连接上文件中任意一个excel文件

OLE DB目标新建连接管理器,连接上数据库,选择临时表[IMP_DJ]

 

在映射中可以看到excel源与OLE DB目标的字段都一一关联上

返回控制流面板,向循环容器中拖入文件系统任务,将其与数据流连接上

Operation中选择移动文件,目标连接选择文件上传好以后移动到的备份文件夹,源连接选择原文件夹位置的变量

最后,在控制流面板中拖入执行SQL任务编辑器,放在循环容器下面,并将其与循环容器连接上

Connection选择数据库,SQLStatement中写进

-- 删除正式表中已有的临时表中的数据
delete from DJ 
where A in (select distinct A from IMP_DJ)

-- 将临时表的数据插入到正式表中
insert into DJ select * from IMP_DJ

 

执行一下就OK啦~~~

此方法可以完美的做到先判断文件夹中的文件正式表中是否存在,不存在的增量插入,存在的更新

 

若只是向批量上传文件夹中的文件请参考我另一篇博客:https://blog.csdn.net/weixin_41542593/article/details/104988366

 

感谢阅读!!!

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BI-段二胖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值