发布时间:2009年12月04日
|
编辑:象牙塔 技术部 |
点击率:3612次
最近在研究批量导入数据的问题,这个其实没有什么难点,只是如果一次性数据全部导入的话,要是数据量小的话,还可以,要是几万条,肯定会出现延时问题。我研究了一下,结合一个朋友的建议,写了一个小导入程序,供大家参考!
<%
Dim ResultNum 定义每次插入记录数
Dim Page 定义循环次数
ResultNum = 100 定义每次插入200条记录
Page = Trim(Request.QueryString("Page"))
If Page = "" Then
Page = 1
End If
Page = Cint(Page)
PageTmp = Page-1 计算当前记录数用
Set Rs = Server.CreateObject("Adodb.RecordSet")
Sql = "Select Count(ID) As Cnt From [Sheet1$]"
Rs.Open Sql,Conn,1,1
Cnt = Rs("Cnt")
Rs.Close
PageSize = Cnt/ResultNum+1 统计总页数
If Page > PageSize Then
Set Rs = Nothing
Conn.Close
Set Conn = Nothing
Response.Write("已经到记录末尾!")
Response.End()
End If
Sql = "Select * From [Sheet1$] Where Id Between "&(PageTmp*ResultNum+1)&" And "&Page*ResultNum&""
Rs.Open Sql,Conn,1,1
If Rs.Eof And Rs.Bof Then
%>
<%
Else
%>
正在插入<%=(PageTmp*ResultNum+1)%>条到<%=Page*ResultNum%>条数据,请稍后…… |
<%
Connstr1 = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Extended properties=Excel 5.0;Data Source="& Server.MapPath("db/pdlfood.xls")
Set Conn1 = Server.CreateObject("Adodb.Connection")
Conn1.Open Connstr1
Do While Not Rs.Eof
Set Rs1 = Server.CreateObject("Adodb.RecordSet")
Sql1 = "Select * From [Sheet1$] Where FoodCode = "&Rs("FoodCode")&" "
Rs1.Open Sql1,Conn1,1,3
If Rs1.Eof And Rs1.Bof Then
Rs1.AddNew
Rs1("FoodCode") = Rs("FoodCode")
Rs1("FoodName") = Rs("FoodName")
Rs1.Update
Else
不做处理
End If
Rs1.Close
Set Rs1 = Nothing
Rs.MoveNext
Loop
Conn1.Close
Set Conn1 = Nothing
End If
Rs.Close
Set Rs = Nothing
Conn.Close
Set Conn = Nothing
Response.Write("")
%>