如标题中所述, 我有一个Web应用程序,用户应该在其中上传excel文件, 然后,系统将读取它并将其放入记录集,然后将其循环以逐一读取要处理的数据到数据库中。
问题是,它可以很好地处理小数据,但是当我尝试处理大约919条记录时,它停留在大约890条记录中,而应用程序池本身就停止了,我猜它崩溃了。
我尝试将每100条记录的response.flush无效。在服务器内部运行进程会给我这个错误,大约890条记录, w3wp.exe发生未处理的win32异常。
谢谢。
该代码采用经典的ASP,vbscript
我的初始代码:
Set objConn = Server.CreateObject("ADODB.Connection")
dim tmpRS
objConn.open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & folderPath & "\" & fname_ & "; Extended Properties='Excel 8.0;HDR=No'"
Set cat = Server.CreateObject("ADOX.Catalog")
cat.ActiveConnection = objConn
For tnum = 0 To cat.Tables.count - 1
Set tbl = cat.Tables(tnum)
set objRS = server.createObject("ADODB.recordset")
objRS.Open "SELECT * FROM [" & tbl.Name & "]" , objConn
if objRs.eof = false Then
set tmpRS = mydb("INSERT INTO tmpTable VALUES ('" & TRIM(objrs.fields.item(0)) & "')", 3)
set tmpRS = nothing
end if
set objrs = nothing
Next
objConn.close
我发现的当前解决方案:
Set objConn = Server.CreateObject("ADODB.Connection")
dim tmpRS
objConn.open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & folderPath & "\" & fname_ & "; Extended Properties='Excel 8.0;HDR=No'"
set objRS = server.createObject("ADODB.recordset")
objRS.Open "SELECT * FROM [Sheet1$]" , objConn
if objRs.eof = false Then
set tmpRS = mydb("INSERT INTO tmpTable VALUES ('" & TRIM(objrs.fields.item(0)) & "')", 3)
set tmpRS = nothing
end if
set objrs = nothing
如果有人能指出我的初始代码有什么问题,我将不胜感激。