...编辑
可能我在原帖中并不清楚。我只处理文件名。
文件名已包含我想要的所有信息。
例如。 2011--8-27_13:20:45_MyLocation_User1.jpg
。
我解码名称并使用列(DateTime,Location,User)插入表中。 我没打开文件。这是一张Jpg图片。处理完毕后,我需要将文件移到基于UserName的文件夹中。
现在我正在使用Insert Statement
Private Function InsertToDB(ByVal SourceFile As String, ByVal Date_Time As DateTime, ByVal Loc As String, ByVal User As String) As Boolean
Dim conn As SqlConnection = New SqlConnection(My.Settings.ConString)
Dim sSQL As String = "INSERT INTO StageTbl ...."
Dim cmd As SqlComman
cmd = New SqlCommand(sSQL, conn)
....Parameters Set ...
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
conn = Nothing
cmd = Nothing
End Function
将为找到的每个文件调用该函数。
这是最有效的方式吗?看起来很慢。我需要处理大约20~50个文件/秒。可能是一个存储过程?
我需要尽快做到这一点。我认为批量插入不适用于此。
请帮忙。
答案 0 :(得分:1)
你看过SSIS吗?
另外,请分批查看处理。您可以使用行构造函数在SQL Server中插入多行。
INSERT INTO <table> (Col1, Col2, Col3)
VALUES (File1, Val2, Val3),
(File2, Val2, Val3),
(File3, Val2, Val3)
答案 1 :(得分:0)
就SQL而言;
至于移动文件;
你没有说文件有多大。如果它们很小,那么当你处理它们时,你可以移动它们。
如果它们很大,那么以后可能会处理它们。您可以使用MSMQ我想在有时间或处理器时间时移动文件。
您需要记录已处理的日志,但这不是真正的问题
修改强>
使用WWF创建工作流,并为要处理的每个文件创建WF。然后,工作流可以处理诸如SQL插入,移动文件以及将文件放入错误文件夹(如果有的话)。
.Net可以自动监控文件夹中的新文件并开始一个过程。