关于sql server的对于excel文件内容来相应更新语句

使用场景:经常会有客户将一些 数据信息 通过excel表格 来表达。那么程序员需要将这些信息放入项目对应建立的表中。

1:如果就是全新的数据 其实就是插入

2:如果是在原有的excel文档上 客户又新增了一些数据或者又更改了一些信息  那么就需要新增新的数据,以及更新老的数据

接下来就介绍如何操作:

第一步:先将excel文件 导入数据库 形成一个表   通过sql server提供的任务很简单

右键你的数据库-任务-导入数据

这个很简单 按图一步步来就行了,那么对应excel的表就建好了。

第二步:就是操作excel表与要新增或者修改的表

1:有后续新增    找到与之前相比(已经新增过操作将之前的数据放入数据库了)后续新增的数据

关联一下 左连接 excel表  如果数据库中的表id为空 就说明是新增的数据   放到#temp临时表中代表所需新增数据

select distinct a.*  into #temp 
 from Test.[dbo].[temp] a left join  [dbo].[EnterpriseBaseInfo] b 
  on 条件  
where b.ID is  null 

虽然excel表建好了 但是列名其实都是excel的列名字

那么接下来需要的操作就是将#temp 的新增数据 需要将列名的名字进行中文-英文的转换(一般数据库都是英文,excel都是中文)

列如:

select NEWID() ID, c.* into #tempinsert  from (
 select  distinct  top 10  原组织机构代码  EnterpriseCode, 单位详细名称 EnterpriseName 
 (case when [贵单位是否为批发、零售、住宿或餐饮业法人单位或产业活动单位]='1' then 1 when [贵单位是否为批发、零售、住宿或餐饮业法人单位或产业活动单位]='2'then 0 else null end)  IsBusiness
from #temp a) c

这样转换过后就可以插入 sql的表了

 insert into  [dbo].[EnterpriseBaseInfo] select * from #tempinsert

如果列名不全部插入那就insert into  [dbo].[EnterpriseBaseInfo](a,b,c) select a,b,c from #tempinsert  因为列名都匹配上了

 

2:更新

一般都是将另一个表的字段内容更新到这个表的字段  根据一个条件匹配

update  table_a  set   1=table_b.2 from table_b  where  table_a.id=table_b.id

table_b 可以是一个表也可以是几个表的结合数据

  update [dbo].[EnterpriseBaseInfo] set Switchboard=convert(nvarchar(30),convert(decimal(11,0),t.固定电话))+ iif(t.电话分机号 is null,'','-'+convert(nvarchar(30),convert(decimal(11,0),t.电话分机号)))
 from 
(
 table
 ) t where [EnterpriseBaseInfo].ID=t.ID 

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值