mssql数据库a表其中一列有唯一约束,就是主键,而Excel b表与a表中的结构完全一样
如果b表中的主键与a表中相同,则将a表中的内容更新
如果b表中的主键与a表中不相同,则将其插入a表
关键是不知道怎样判断一个表中哪个是主键这样的sql语句怎样写呀??1)你要更新a表的什么内容
2)表中的主键未知?不会吧?
3)你要将b表中的什么插入到a表中,
4)b表是execl?
如果b表中的主键与a表中相同,则将a表中的内容更新
如果b表中的主键与a表中不相同,则将其插入a表
关键是不知道怎样判断一个表中哪个是主键这样的sql语句怎样写呀??1)你要更新a表的什么内容
2)表中的主键未知?不会吧?
3)你要将b表中的什么插入到a表中,
4)b表是execl?
TO yjdn(无尽天空)
1)更新a表中除了主键的部分
2)表中的主键不知道,通过程序判断a表中的主键
3)将b表中主键部分与a表不同的记录插进a表
4)b表是excel表
b表中的哪个字段是和a表相关的?
还有,把两个表的部份数据列出来,这样快一点
先倒入到sqlserver的一个新表,再在sql server里解决主键冲突的问题,这样问题简单化
select name from syscolumns where exists(select id,indid from sysindexes where name='PK_'+表名and syscolumns.id=sysindexes.id and syscolumns.colid=sysindexes.indid)
b表通过和a表相同的主键和a表关联
比如如下数据
a表
姓名(主键) 性别 生日 是否就业
小王 男 1982 否b表中有如下数据
姓名 性别 生日 是否就业
小王 男 1982 是
小明 男 1982 是
就需要把a表中
小王这条记录的是否就业字段改为是
同时插入小明的这条记录
update a set 是否就业='是' from
(select * from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 8.0;HDR=NO;DATABASE=c:\test.xls' --c:\test.xls是excel文件名
,sheet1$))b where a.姓名=b.姓名
--不知道这样得不得,没有测试过
update a set 是否就业='是' from OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 8.0;HDR=NO;DATABASE=c:\test.xls' --c:\test.xls是excel文件名
,sheet1$) b where a.姓名=b.姓名
update 表名 set 字段1=值1,字段2=值2.......
as
begin
delete bxstudent from
OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\bxstudent.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
a where bxstudent.xh=a.xh
insert into bxstudent select xh,xm,xb,zzmm,pyfs,sfjy from
OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\bxstudent.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$] a
where a.xh<>'xh'end