各位朋友,本人有这样一个需求不知是否可以实现,望高手指点一二。现有一部分数据(excel文件),想让其内容导入到数据库某一表中,表中有卡号、总金额、总积分这三列需特殊处理,如果从EXCEL中导入的数据卡号有重复的,那么总金额、总积分采用累加,其他列内容全部替换。不知可否实现,谢谢大家了。例如A   EXCEL表格   
  表名:POS 
       字段     ID        卡号      金额        积分      ........
                1         001         10            10   
                2         002         10            10   
                3         003         10            10     
  ---------------------------   
B   数据库   
  表名:VIP   
       字段     ID        卡号      金额         积分     ........
                1         002         20            20   
                2         003         20            20   
                3         004         20            20   
最后要求的结果是  表名:VIP   
       字段     ID        卡号      金额         积分     ........
                1         001         30            30
                2         002         30            30  
                3         003         30            30   
                4         004         20            20   

解决方案 »

  1.   

    --访问EXCEL数据
    exec sp_addlinkedserver @server='EXCEL2',@srvproduct='EXCEL',@provider='MICROSOFT.JET.OLEDB.4.0',
         @datasrc='c:\book1.xls',@provstr='EXCEL 8.0'
      

  2.   

    SELECT * 
    FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\book1.xls";User ID=;Password=;Extended properties=Excel 8.0')...spkfk$
      

  3.   

    --1
    select a.*,b.*
      from vip a left join (
              SELECT * 
                FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
                'Data Source="c:\book1.xls";User ID=;Password=;Extended properties=Excel 8.0')...pos$ 
               ) on a.id=b.id
                   --"c:\book1.xls"  为文件所在路径
      
    --2
    SELECT * into #pos
                FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
                'Data Source="c:\book1.xls";User ID=;Password=;Extended properties=Excel 8.0')...pos$       
                       
    select a.*,b.*
      from vip a left join #pos b
             on a.id=b.id
      

  4.   

    服务器: 消息 7314,级别 16,状态 1,行 1
    OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 不包含表 'vip$'。该表可能不存在,或当前用户没有使用该表的权限。
      

  5.   

    select a.*,b.*
      from vip a left join (
              SELECT * 
                FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
                'Data Source="c:\book1.xls";User ID=;Password=;Extended properties=Excel 8.0')...pos$ 
               )b on a.id=b.id
                   --"c:\book1.xls"  为文件所在路径
      
    --2
    SELECT * into #pos
                FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
                'Data Source="c:\book1.xls";User ID=;Password=;Extended properties=Excel 8.0')...pos$       
                       
    select a.*,b.*
      from vip a left join #pos b
             on a.id=b.id
      

  6.   

    昨天还好好的,今天又报这个错了。服务器: 消息 7399,级别 16,状态 1,行 1
    OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 报错。提供程序未给出有关错误的任何信息。
      

  7.   

    excel文件是关闭的,excel进程也没有。