mssql数据库a表其中一列有唯一约束,就是主键,而Excel b表与a表中的结构完全一样
如果b表中的主键与a表中相同,则将a表中的内容更新
如果b表中的主键与a表中不相同,则将其插入a表
关键是不知道怎样判断一个表中哪个是主键这样的sql语句怎样写呀??1)你要更新a表的什么内容
2)表中的主键未知?不会吧?
3)你要将b表中的什么插入到a表中,
4)b表是execl?

解决方案 »

  1.   

    也就是一个数据导入的问题,把execel表中的数据导入进mssql表中,
    TO  yjdn(无尽天空)
    1)更新a表中除了主键的部分
    2)表中的主键不知道,通过程序判断a表中的主键
    3)将b表中主键部分与a表不同的记录插进a表
    4)b表是excel表
      

  2.   

    2)表中的主键不知道,通过程序判断a表中的主键
    b表中的哪个字段是和a表相关的?
    还有,把两个表的部份数据列出来,这样快一点
      

  3.   

    给个思路
    先倒入到sqlserver的一个新表,再在sql server里解决主键冲突的问题,这样问题简单化
      

  4.   

    如何获得主键的字段名?select b.name from sysobjects a,sysobjects b where a.id=b.parent_obj and b.xtype='PK' and a.name='表名'
    select name from syscolumns where exists(select id,indid from sysindexes where name='PK_'+表名and syscolumns.id=sysindexes.id and syscolumns.colid=sysindexes.indid)
      

  5.   

    TO  yjdn(无尽天空)
    b表通过和a表相同的主键和a表关联
    比如如下数据
    a表
    姓名(主键) 性别 生日 是否就业
    小王        男   1982   否b表中有如下数据
    姓名        性别 生日 是否就业
    小王        男   1982   是
    小明        男   1982   是
    就需要把a表中
    小王这条记录的是否就业字段改为是
    同时插入小明的这条记录
      

  6.   

    --a.姓名=b.姓名的情况
    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.姓名
      

  7.   

    可以同时更新一个表的几个列
    update 表名 set 字段1=值1,字段2=值2.......
      

  8.   

    但是字段名和字段值都是从xls文件中取出,不知道怎样操作
      

  9.   

    create  proc proc_try
    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