代码改变世界

Excel导入SQL

2008-01-28 21:39  Animax!  阅读(323)  评论(0编辑  收藏  举报


SQL语句:

select * into 临时表 FROM  OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="Excel地址";
Extended properties=Excel 8.0
')工作簿$

存储过程:

CREATE PROCEDURE IntroductionExcel
  
@TableName varchar(2048),       --导入到那个表的表名
  @ExcelAddress varchar(2048),    --导入的Excel文件的完全路径
  @SheelName varchar(2048)        --导入的Excel文件的工作簿名
AS
  
-- 如果要导入到的那个表存在,则先删除那个表
  DECLARE @SQLDelTable varchar(2048)
  
set @SQLDelTable =
        '
if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' +
        @TableName + ']'') and OBJECTPROPERTY(id, N''IsUserTable'') = 1)  drop table [dbo].[' +
        @TableName + '' 
  
  
exec ( @SQLDelTable ) -- 用SQL执行制造存储过程中制造的SQL语句,只需要在语句加 exec()
  
  
-- 导入数据到指定的表中
  DECLARE @SQLAddress varchar(2048)
  
set @SQLAddress ='''Data Source="' + @ExcelAddress + '";
  Extended properties=Excel 8.0
'''

  
DECLARE @SQlStr varchar(4000)
  
set @SQlStr = 'select * into TmpBaseData FROM  OpenDataSource(''Microsoft.Jet.OLEDB.4.0'','
    
+ @SQLAddress + ')Sheet1$'

  
exec (@SQlStr)
GO


使用浮标处理表中的数据:

-- 首先,声明浮标所需要的变量
DECLARE @字段1
DECLARE @字段2

-- 声明浮标
DECLARE 浮标的名字 CURSOR FOR
SELECT 字段1,字段2
FROM 表名

-- 使用浮标
OPEN 浮标的名字
FETCH NEXT FROM 浮标的名字 
INTO  @字段1,@字段2
WHILE @@FETCH_STATUS = 0

--================= 这里是开始
BEGIN

-- TODO:数据处理



-- 浮标转到下一行
FETCH NEXT FROM 浮标的名字
INTO  @字段1,@字段2

--================= 这里是结束
END