我想实现一个sql的功能,使sql和一个固定的excel表连接。让sql每隔一秒就对这个excel表进行一次扫描,将所扫描的结果作为一个新行插入到sql表中。不知是否能实现,请高手指点!

解决方案 »

  1.   

    1.写个存储,用于读取excel的内容
    2.建个sql job定时执行上面那个存储下面是SQL SERVER连接EXCEL的代码EXEC sp_configure 'show advanced options', 1   
    GO
    RECONFIGURE
    GO
    EXEC sp_configure 'Ad Hoc Distributed Queries', 1
    GO
    RECONFIGURE
    GO
    --> Jet 引擎访问 Excel 97-2003   select * from OpenRowSet('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls', 'select * from [Sheet1$]')    
    select * from OpenRowSet('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls', [Sheet1$])    
    select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls')...[Sheet1$]    
    select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0', 'Data Source=D:\97-2003.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"')...[Sheet1$]    
     --> ACE 引擎访问 Excel 97-2003   select * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls', 'select * from [Sheet1$]')    
    select * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls', [Sheet1$])    
    select * from OpenDataSource('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls')...[Sheet1$]    
    select * from OpenDataSource('Microsoft.ACE.OLEDB.12.0', 'Data Source=D:\97-2003.xls;Extended Properties="Excel 12.0;HDR=Yes;IMEX=1"')...[Sheet1$]    
       
    --> ACE 引擎访问 Excel 2007   select * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\2007.xlsx', 'select * from [Sheet1$]')    
    select * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\2007.xlsx', [Sheet1$])    
    select * from OpenDataSource('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\2007.xlsx')...[Sheet1$]    
    select * from OpenDataSource('Microsoft.ACE.OLEDB.12.0', 'Data Source=D:\2007.xlsx;Extended Properties="Excel 12.0;HDR=Yes;IMEX=1"')...[Sheet1$]   
      

  2.   

    job 定时执行存储过程的方法
      

  3.   

    写一个存储过程 
    一步一步的来
    第一步删除,第二步插入
    第一行不显示? 不应该啊 你使用的OpenRowSet吗
      

  4.   

    是这样,我的这张excel表是每秒钟都在变,我的目的就是记录它的所有出现的值。所以我还需要以前所扫描的数据啊,有没有什么方法能不用删除原来的表也可以将新扫描的结果插入到原先的表中?
      

  5.   

    这是我建立的存储过程,能实现,只是怎么能让它每秒钟执行一次呢?
    create proc procjf
    as
    waitfor delay '00:00:01'
    INSERT INTO oosw SELECT * FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Excel 5.0;HDR=YES;DATABASE=d:\book1.xls',sheet1$)
    go
    exec  procjf