写了一个排查文件是否在数据库存在的程序但是运行很慢

问题描述

在一个文件夹中遍历所有文件名,判断是否存在于数据库如果存在就移动到truefilepath文件夹没有存在移动到false文件夹但是运行时间很长姚156秒才能运行完。求大神帮助,史什么地方的操作导致的程序运行缓慢'/判断是否受信PrivateFunctionExecuteTableshoukai(ByValfolderspec)AsBooleanDimvlSqlAsStringDimvlDataTableAsDataTableDimvlCheck1AsString=String.EmptyDimIsNullAsStringDimfs,f1,f2,FFFreDimFormatName,FormatName1DimReadAsBoolean=TrueDimiAsInteger=1Dimi1AsStringDimi2AsStringDimvlReturnAsBooleanfs=CreateObject("Scripting.FileSystemObject")basLogOut.WriteOperationLog(cmMODULE_NAME,"ExecuteTableshoukai","YesORNo")'遍历文件WhileRead=Truei1=Trim(i)i2=Trim(i+1)FilePathFileName=KobayashiCreate.Common.IniFile.GetAppString("GIGCC2JP","AW_ReciveFolder_"+i1,vmIniFile)IsNull=KobayashiCreate.Common.IniFile.GetAppString("GIGCC2JP","AW_ReciveFolder_"+i2,vmIniFile)IfIsNull=String.EmptyThenRead=FalseEndIfWorkFilePathFileName=KobayashiCreate.Common.IniFile.GetAppString("GIGCC2JP","AW_WorkFolder_"+i1,vmIniFile)TrueFilePathFileName=KobayashiCreate.Common.IniFile.GetAppString("GIGCC2JP","AW_SaveFolder_"+i1,vmIniFile)FalsePathFileName=KobayashiCreate.Common.IniFile.GetAppString("GIGCC2JP","AW_Taishougai_"+i1,vmIniFile)vlCheck=KobayashiCreate.Common.IniFile.GetAppString("GIGCC2JP","SearchPattern_"+i1,vmIniFile).Split(".")vlCheck1=vlCheck(1)i=i+1'/遍历目标文件夹f1=fs.GetFolder(FilePathFileName)DimSerchFD=f1.SubFolders'定义文件夹对象DimSerchFF=f1.Files'定义文件对象'/复制文件到目标文件夹Ifi=2ThenForEachFFFreInSerchFFFileCopy(FilePathFileName+FFFre.Name,WorkFilePathFileName+FFFre.Name)NextEndIf'/遍历工作文件夹f2=fs.GetFolder(WorkFilePathFileName)DimSerchFD1=f2.SubFolders'定义文件夹对象DimSerchFF1=f2.Files'定义文件对象ForEachFFFreInSerchFF1FormatName=Split(FFFre.Name,".")FormatName1=FormatName(1)'/对比该文件后缀是否相同IfUCase(FormatName1)=UCase(vlCheck1)ThenvlSql="select*fromTT_GIG_RCV_AW_HEADwhereINT_JUSHIN_STATUS=2"vlDataTable=IDataBaseAccess.GetDataTable(vlSql)ForEachdrAsDataRowInvlDataTable.Rows'/判断数据库字段是否存在该文件Ifdr("TORIKOMI_FILE_NAME").ToString()=FFFre.NameThenDimstrPair,a,b,Time,NewfileName'/检查文件字段是否合格vlReturn=MyTxtReader(WorkFilePathFileName+FFFre.Name)'/判断文件中第39IfvlReturn=TrueThen'/更改名称strPair=Split(FFFre.Name,".")a=strPair(0)Time=Format(Now,"yyyyMMddHHmmss")NewfileName=a+Time+".BK"Rename(WorkFilePathFileName+FFFre.Name,WorkFilePathFileName+NewfileName)FileCopy(WorkFilePathFileName+NewfileName,TrueFilePathFileName+NewfileName)'复制文件Kill(WorkFilePathFileName+NewfileName)ExitForElseFileCopy(WorkFilePathFileName+FFFre.Name,FalsePathFileName+FFFre.Name)'复制文件Kill(WorkFilePathFileName+FFFre.Name)ExitForEndIf'Else'FileCopy(WorkFilePathFileName+FFFre.Name,FalsePathFileName+FFFre.Name)'复制文件'Kill(WorkFilePathFileName+FFFre.Name)EndIfNextEndIfNextForEachFFFreInSerchFF1FileCopy(WorkFilePathFileName+FFFre.Name,FalsePathFileName+FFFre.Name)'复制文件Kill(WorkFilePathFileName+FFFre.Name)NextEndWhileEndFunction'/读取文本PublicFunctionMyTxtReader(ByValStrPathAsString)AsBooleanDimvlRtnAsBoolean=TrueDimMyTxtAsStringIfIO.File.Exists(StrPath)=TrueThenDimTxtReaderAsIO.StreamReader=NewIO.StreamReader(StrPath,System.Text.Encoding.Default)DimvlCheckAsString()DimvlCheck1AsStringMyTxt=TxtReader.ReadToEndvlCheck=Split(MyTxt,",")vlCheck1=vlCheck(39)IfvlCheck1="""0"""OrvlCheck1="""2"""ThenvlRtn=TrueTxtReader.Close()ReturnvlRtnElsevlRtn=FalseTxtReader.Close()ReturnvlRtnEndIfEndIfEndFunction

解决方案

解决方案二:
自己断点,打印下各步骤的耗时就找出耗时原因了,你的代码有点复杂,就排查文件,只文件名,大小等,不验证文件是否相同应该很快,如果是严重文件内容,介个就不好说了,还有数据库存储的文件信息能一次查询最好,可以节约速度。

时间: 2024-10-22 20:53:56

写了一个排查文件是否在数据库存在的程序但是运行很慢的相关文章

dynamic-新建了一个Dynamic Web Project 里面写了一个extjs文件

问题描述 新建了一个Dynamic Web Project 里面写了一个extjs文件 为什么会这样呢 解决方案 web.xml里面配置的首页是什么 解决方案二: 检查encoding的编码,以及家产extjs的配置,一个extjs开发包,一个是用于.符提示的资源包

存储-请问可以对一个记事本文件进行类似数据库操作吗?

问题描述 请问可以对一个记事本文件进行类似数据库操作吗? 类似简单的查询语句之类 .我只找见了对EXCEL操作的例子,如何对记事本文件进行数据库操作, 就是对存储在记事本文件中的内容进行select操作,怎么定义数据源,怎么定义对象? 解决方案 可以,将文件保存为csv格式(逗号分隔的数据),可以用oledb引擎像数据库那样读取. 解决方案二: 这个直接用io就可以了吧.毕竟记事本和excel和数据库来说,相当于白纸了

C#写的一个exe文件怎么运行时候检测用户是否安装了net2.0环境了呢,如果没有安装自动安装

问题描述 C#写的一个exe文件怎么运行时候检测用户是否安装了net2.0环境了呢,如果没有安装自动安装注意程序是可执行的不是安装包的. 解决方案 解决方案二:如果不是安装包的话就不行了,因为这个程序在没有装.Net的机器上不能运行,所以没办法去判断最好的就是做安装包,安装包可以自动判断另外也可以做一个非.net的程序,用它来进行判断,启动.net的程序也由它来完成解决方案三:不可能吧,没有.net环境程序都无法初始化.怎么可能执行其他操作那.用c语言,或者用bat都可以做到的解决方案四:可以安

按钮-自己参照书本写了一个Java Swing中的容器类入门程序设计,但是运行结果不对,求大神帮帮忙!

问题描述 自己参照书本写了一个Java Swing中的容器类入门程序设计,但是运行结果不对,求大神帮帮忙! /*题目是这样的:创建一个窗体在其中摆放两个内容面板对两个面板进行边框个性化设置.初始状态为第二个面板不可见,当单击第一个面板中的"打开"按钮时,第二个面板即可见:当单击第一个面板中的"关闭"按钮时,第二个面板消失. 以下是我结合书本写的代码,不知道为什么运行不了???*/import javax.swing.*;import java.awt.*;impor

c语言-写了一个先序创建二叉链表的程序,但是怎么都不能成功

问题描述 写了一个先序创建二叉链表的程序,但是怎么都不能成功 源代码: #include #include #include #define TElemtype char #define Status int #define OK 1 #define ERROR 0 typedef struct BiTNode { TElemtype data; struct BiTNode lchild,*rchild; }BiTNode; typedef BiTNode BiTree; Status Cre

和同事写了一个下午的递归读取数据库的javabean

递归|数据|数据库 /* * 创建日期 2005-4-14 * * TODO 要更改此生成的文件的模板,请转至 * 窗口 - 首选项 - Java - 代码样式 - 代码模板 */package treeMenu;import java.util.*;import java.sql.*;import dbmanager.DBConnection;import javax.servlet.jsp.JspWriter;/** * @author 呆猴 lucky * * TODO 要更改此生成的类型

写了一个Office文件资源提取工具,希望大家多多指教

问题描述 这个工具可以把docx,xlsx,pptx类型的Office文件中的各种资源提取提取出来.这些可提取的资源包括声音,图像,视频等等.比如有一个文档叫text.docx,这个文档中有个图片叫a.jpg,那么使用这个工具则可以把a.jpg提取出来,并且保证图片不失真.资源地址:http://download.csdn.net/detail/lvmeng0206/3910877 解决方案 解决方案二:楼主太强了,学到不少,期待楼主的其他资源!!解决方案三:O(∩_∩)O谢谢分享,学习了.解决

写了一个bat文件,怎么让它运行完成后不关闭窗口?

问题描述 内容如下,保存为.bat格式D:cdD:ProgramFilesAndroidSDKtoolsandroidcreateuitest-project-nJSYD-t1-pD:workspaceJSYD试过很多方法:pause,sleep--网上找了很多方法都不行,请大家指教 解决方案 解决方案二:D:cdD:ProgramFilesAndroidSDKtoolscallandroidcreateuitest-project-nJSYD-t1-pD:workspaceJSYDpause

c#写的一个exe文件双击打开后连接到一个网址

问题描述 staticvoidMain(){//Application.Run(newForm1());System.Diagnostics.Process.Start("C:\ProgramFiles\InternetExplorer\IEXPLORE.EXE","http://www.baidu.com");}不知道对不对,总觉得没这么简单. 解决方案 解决方案二:测试一下,能打开不就行了,或者用linkLabel"http://www.baidu.c