从外部导入数据到数据库里,表里原有数据要更新,原来没有的数据要插入,大家有什么高效的方法没有?

解决方案 »

  1.   

    数据源是什么呀
    如果是数据库中的那就好办了。。
    自己写一个程序就行了
    如果是EXCEL中的我也不会....
    UP......
      

  2.   

    可以把excel中的数据先导入sql server,然后在按你的规则把导入到sql server中的数据导入你的正式表中.
      

  3.   

    数据源是Excel,想导入到SQL Server中
      

  4.   

    用OPENROWSET一次性导入:
    sql2   ="Insert   Into   目的表(字段1、字段2)   select   字段a,字段b   from   openrowset('MICROSOFT.JET.OLEDB.4.0','Excel   8.0;DATABASE=c:\test.xls',sheet1$) a where 目的表.字段1<>a.字段a and 目的表.字段2<>a.字段b"
      

  5.   

    先从Excel一条条读取出数据,然后循环一条条插入SQL SERVER
      

  6.   

    表里原有数据要更新,原来没有的数据要插入没看清楚,如果是这样要用到两条语句,用个存储过程吧(以下假设id为主键):
    create proc test
    as
    Insert   Into   目的表(字段1、字段2)   select   字段a,字段b   from   openrowset('MICROSOFT.JET.OLEDB.4.0','Excel   8.0;DATABASE=c:\test.xls',sheet1$) a where 目的表.id<>a.idupdate 目的表 set 目的表.字段1=a.字段a,目的表.字段2=a.字段a from openrowset('MICROSOFT.JET.OLEDB.4.0','Excel   8.0;DATABASE=c:\test.xls',sheet1$) a  set a.where 目的表.id<>a.idGO
      

  7.   

    哟,第二条改把<>改成=:
    update 目的表 set 目的表.字段1=a.字段a,目的表.字段2=a.字段a from openrowset('MICROSOFT.JET.OLEDB.4.0','Excel   8.0;DATABASE=c:\test.xls',sheet1$) a  set a.where 目的表.id=a.id
      

  8.   

    另外还可以先删除后插入,如:
    create proc test
    as
    delete from 目的表 where id=(select  id from   openrowset('MICROSOFT.JET.OLEDB.4.0','Excel   8.0;DATABASE=c:\test.xls',sheet1$))Insert   Into  目的表(字段1、字段2)  select   字段a,字段b   from   openrowset('MICROSOFT.JET.OLEDB.4.0','Excel   8.0;DATABASE=c:\test.xls',sheet1$) a where 目的表.id<>a.id
    GO
    不知道符不符LZ的要求呢?
      

  9.   

    where id=  是不是替换成 where id in ? 或者 wehre id not in ?例如: 这个会将Excel中有而表中没有的插入表中:
    Insert Into newtable(备注,件进价,商品名称,条码,折扣)
      select 备注,件进价,商品名称,条码,折扣
      from 
       openrowset( 'Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;DATABASE=D:\My Documents\123.xls',Report1$) a 
        where a.商品名称 not in(select 商品名称 from newtable)