- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
全部,
我正在开发一个允许授权用户将 Excel 电子表格上传到我们的服务器的应用程序。
上传后,会有一个经典的 ASP 脚本读取 Excel 电子表格中的数据,进行一系列验证、解析和操作,然后将修改后的数据写入制表符分隔的文本文件。
然后,它会在 SQL Server 中启动一个存储过程,该过程使用“批量插入”将数据加载到数据库中。
当文件较小时,整个过程运行良好。但随着它们变大(15,000 多行,5+ mb),脚本开始需要很长时间才能运行(60 多秒)。
因此,我正在寻找使其更高效/更快/更稳健的方法。
粗略地说,现在的代码是这样的:
'' # read the uploaded Excel file
set objConnection = Server.CreateObject("ADODB.Connection")
objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & xlsfile & ";Extended Properties=""Excel 8.0;"""
set objRS = objConnection.execute("Select * from [Sheet1$]")
rows = ""
while (not objRS.EOF and Err.Number = 0)
row = objRS("col1") & vbTab & objRS("col2") & vbTab ... objRS("coln") & vbCrLF
rows = rows & row
objRS.MoveNext
wend
objRS.close
'' # Write the file
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(txtFile, 2, true)
objFile.WriteLine rows
objFile.Close
set objFSO = nothing
set objFile = nothing
如您所见,整个文件被读入一个名为“rows”的变量,然后被转储到文本文件中。
有更好的替代方案吗?例如,我是否应该像从 Excel 中读取一样逐行写入文本文件?
我考虑过的另一种可能性 - 将 Excel 文件读入 SQL Server 中的临时表,并在那里进行所有验证/操作。唯一的问题是我找不到与“批量插入”等效的方法 - 我想我可能必须在 Excel 中逐行读取数据,然后将其逐行写入 SQL Server 中的临时表。
非常感谢您的任何建议和见解!
最佳答案
杀死你的是所有的字符串连接。一个简单的步骤是在文本文件上交错行读取和对 WriteLine 的调用。您一次只能将一行的大小保存为字符串。
像这样:-
set objConnection = Server.CreateObject("ADODB.Connection")
objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & xlsfile & ";Extended Properties=""Excel 8.0;"""
set objRS = objConnection.execute("Select * from [Sheet1$]")
set objFSO = CreateObject("Scripting.FileSystemObject")
set objFile = objFSO.OpenTextFile(txtFile, 2, true)
do until objRS.EOF
tab = ""
for each fld in objRS.Fields
objFile.Write tab
objFile.Write fld.value
tab = vbTab
next
objFile.Write vbCrLf
objRS.MoveNext
loop
objRS.close
objConnection.Close
objFile.Close
关于asp-classic - 经典 ASP : Best way to read & write large (5mb+) files using FileSystemObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1675422/
我想知道是否有人可以帮助我,因为我对我认为导致简单错误的简单原因视而不见。 我有这个代码: doRound1(x1) denom1 = 5 y1 = denom1 - x1 mod deno
我有以下代码,注释详细说明了会发生什么: averageNum = myArray2(0) 'assign variable response.write(TypeName(averageNum)&"
我有以下脚本,它在本地运行良好(Windows 10 IIS、Windows 2003 Server),但不适用于我们的托管服务器(Windows 2003 Server)。任何超过 4mb 的下载都
ASP Classic 是否具有等同于 PHP 的“包含一次”功能的功能? 最佳答案 我知道这是一个古老的话题,但我想如果有人感兴趣,我会加上我的两分钱。 我编写了一个函数,它完全符合您的要求:无论调
我在Windows 7中运行IIS 7.5,并且已经进入“打开或关闭Windows功能”并在“Internet信息服务/万维网服务/应用程序开发功能”中启用了ASP。一旦做完,我开始收到一个HTTP
我正在尝试从 MS Access 数据库创建一个 ID(主键和自动增量)以用作登录密码。但我收到此错误: Microsoft OLE DB Provider for ODBC Drivers erro
我已经为 Classic ASP(VBScript) + firephp 编写了一个开源调试类,想知道是否可以获取传递给函数的变量的名称?我进行了搜索,但似乎找不到任何技巧来执行此操作。 例子 代码:
我正在尝试从 MS Access 数据库中创建一个 ID(主键和自动增量)以用作登录密码。但是我收到了这个错误: Microsoft OLE DB Provider for ODBC Drivers
我有一个结帐表格,其中产品的数量可以是“n”。那么我如何知道表单中有多少输入字段并从中获取输入呢? 谢谢 最佳答案 如果它是一组单个控件 - 比如说代表项目的可变数量的复选框 - 解决方案非常简单。对
我刚刚审查了一些旧代码并发现了以下内容(在 foo.asp 中): Const ASP_FILENAME = "foo.asp" ' TODO: Update this to the name of
关注 my last question有谁知道如何在经典 ASP 的应用程序范围内使用字典对象?您不能使用 Scripting.Dictionary - 如果您尝试使用,您将看到类似以下内容: App
我的意思是,像 php'h 包括... 就像是 my_file_to_be_included = "include_me.asp" --> 就我目前所见,有几种选择,但每一种都有某种缺点......
我在哪里可以找到“经典”ASP 代码的编辑器? 最佳答案 如果我要进行大量更改,我总是使用 VS2008(支持智能感知、高亮显示和来自 SP1 的调试),Notepad2对于快速(没有智能感知,只有突
例如,我如何运行下面的 me.test? myvar = 'test' me.myvar ASP 查找方法“myvar”但没有找到。在 PHP 中我可以简单地说 $me->$myvar 但 ASP 的
这是要点: 我有一个我想用asp打的电话,我不关心响应。我只想触发调用,我不希望页面等待响应。根据文档,它应该看起来像这样: dim xmlhttp : set xmlhttp = Server.Cr
示例代码: Dim myObject Set myObject = JSON.parse(someJsonResponseFromTheServer) myFunction(myObject.s
据我所知,VBScript/Classic ASP 中唯一的预处理指令是#include。我不知道这是否是正式名称,但我基本上是在寻找可以在通用 VBScript 之前执行代码或其他指令的代码。 VB
据我所知,VBScript/Classic ASP 中唯一的预处理指令是#include。我不知道这是否是正式名称,但我基本上是在寻找可以在通用 VBScript 之前执行代码或其他指令的代码。 VB
我必须维护一个 ASP 3.0 网站... 我想保护sql语句。 我可以使用此代码保护的选择语句: set cmd = Server.createObject("adodb.command") cmd
我正在使用 WebMatrix 中托管的经典 ASP Web 应用程序。有没有办法调试托管在 WebMatrix 中的网站? 最佳答案 WebMatrix 通过调试工具提供很少(没有)。您可以 Res
我是一名优秀的程序员,十分优秀!