EXCEL数据批量导入SQLSERVER2008备忘记录

本文介绍如何在SQL Server中批量导入Excel数据的方法,包括配置AdHocDistributedQueries选项、针对不同Office版本选择合适的OLEDB驱动程序,以及提供了一个在ASP环境中实现Excel到数据库批量导入的具体函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、开启批量 导入

--启用Ad Hoc Distributed Queries:
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
--使用完成后,关闭Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure 

 

 

二、OFFICE2003版本用MICROSOFT.JET.OLEDB.4.0

OFFICE2007及以后版本用Microsoft.ACE.OLEDB.12.0

如:

set @tableName='各题得分'+@njhao
	--更新已存在的学生成绩	
	set @sql='update '+@tableName+' set '+@zdStr1+' from '+@tableName+' a
	inner join (
	SELECT 学生ID,'+@zdStr0+'
	 FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',''Excel 8.0;IMEX=1;HDR=YES;DATABASE='+@drFileName+''',[getidefen$])
	) b on a.学生ID=b.学生ID where 学科='''+@xueke+''' and 考试ID='+@ksId
	exec(@sql)

 

 

三、在ASP中批量导入的自定义函数(通过hbh类调用数据库的conn)

Function excelToDb(xlsFile, tableName, fieldStr, del)
    excelToDb = 0
    Dim xlsFilePath, fso
    xlsFilePath = Server.MapPath("data\Tmp" & xlsFile & ".xls")
    Set fso = CreateObject("Scripting.FileSystemObject")
    If Not fso.FileExists(xlsFilePath) Then
        Set fso = Nothing
        excelToDb = "对不起,Tmp" & xlsFile & ".xls文件不存在!"
        Exit Function
    End If
    Set fso = Nothing
    If del = 1 Then hbh.conn.Execute ("delete from " & tableName & " where ID>1")
    Dim n1, n2
    n1 = hbh.shsl("select count(*) from " & tableName)
    sql = "INSERT INTO " & tableName & "(" & fieldStr & ") SELECT " & fieldStr & " FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 8.0;IMEX=1;HDR=YES;DATABASE="
    sql = sql & xlsFilePath & "',[" & xlsFile & "$])"
    hbh.conn.Execute (sql)
    n2 = hbh.shsl("select count(*) from " & tableName)
    excelToDb = n2 - n1
End Function

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值