现在我有一个excel文件,我想把里面的数据导入到远端服务器中去,但是那边规定不能修改数据库的结构,只能用临时表,那么请问大家,我怎么才能把excel中的数据导入到远端服务器的临时表中呢?

解决方案 »

  1.   

    --64位win7 sql2008r2  64位offiece2010环境下测试通过(其他系统未试过)
    --1.本机操作,导入数据(d:\生产计划项目.xls sheet1$)插入到本地数据库的jhxm临时表
    delete from jhxm
    goinsert into jhxm(hpbh,hpmc,xh,jhxm,scbj,scbz,gzdj,gzjh)
    select [零件号],[零件名称],[序号],[计划项目],[是否生产报交],[生产班组],[跟踪的单据],[跟踪的件号] --excl第一行的各个字段名
    FROM OpenDataSource('Microsoft.ACE.OLEDB.12.0',
    'Data Source=d:\生产计划项目.xls;
    User ID=Admin;Password=;Extended Properties=Excel 12.0;')...sheet1$ 
    go
    --创建远程服务器连接exec sp_addlinkedserver 
     @server=N'rmtServer', --给远程服务器起名
       @srvproduct=N'',
       @provider=N'SQLOLEDB', 
       @datasrc=N'192.168.0.1,1433' --ip地址和端口号
    go
    --设置远程服务器的登陆凭证
    exec sp_addlinkedsrvlogin 
     @rmtsrvname=N'rmtServer',
     @useself=false,
     @locallogin=NULL,
     @rmtuser='sa',
     @rmtpassword='111111' --sa密码
    go
    --查看是否连接到了远程服务器
    /*
    sp_helpserver
    go
    sp_linkedservers
    go
    */
    --将本地表数据导入到服务器的数据库库中INSERT INTO [rmtServer].[BLASP_QC_20130501].[dbo].[jhxm] SELECT * FROM jhxm
    GO
    --完成之后别忘了移除连接服务器
    sp_droplinkedsrvlogin 'rmtServer', null
    go
    sp_dropserver  'rmtServer','droplogins'
      

  2.   

    2个方法
    要么临时用OpenDataSource,速度快,一次性的
    要么用SSIS,建立ETL包,要定时计划做的,推荐用SSIS。
      

  3.   

    先将本地EXCEL导入本地的SQL,临时表、固定表都无所谓,然后通过链接服务器导入远端服务器的临时表。
    或者有权限的话,将EXCEL拷贝到远端服务器,然后使用数据库的DTS功能直接导入。