Vb.net 逐个插入数千条记录

Vb.net 逐个插入数千条记录,vb.net,sql-server-2008,Vb.net,Sql Server 2008,编辑 可能我在我原来的帖子里不清楚。我只处理文件名 文件名已经包含我想要的所有信息。 例如,2011--8-27\u 13:20:45\u MyLocation\u User1.jpg 我对名称进行解码,并将其插入带有列(DateTime、Location、User)的表中。 我没有打开文件。这是一张Jpg图片。处理后,我需要根据用户名将文件移动到文件夹中 现在我使用Insert语句 Private Function InsertToDB(ByVal SourceFile As String,

编辑

可能我在我原来的帖子里不清楚。我只处理文件名

文件名已经包含我想要的所有信息。 例如,
2011--8-27\u 13:20:45\u MyLocation\u User1.jpg

我对名称进行解码,并将其插入带有列(DateTime、Location、User)的表中。 我没有打开文件。这是一张Jpg图片。处理后,我需要根据用户名将文件移动到文件夹中

现在我使用Insert语句

 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个文件。可能是存储过程

我需要尽快做到这一点。我想批量插入不适用于这里


请帮助。

关于SQL

  • 让你的索引正确
  • 使用事务并在最后提交它
  • 至于移动文件

    你不会说这些文件有多大。如果它们很小,那么在处理它们的过程中,您可以移动它们

    如果它们很大,也许以后再处理。当有时间或处理器时间时,可以使用MSMQ移动文件

    您需要保留已处理的日志,但这不是真正的问题

    编辑

    使用WWF创建工作流,并为每个要处理的文件创建WF。然后,工作流可以处理诸如SQL插入、移动文件以及将文件放入错误文件夹(如果有)之类的事情

    .Net可以自动监视文件夹中的新文件并启动进程。

    您看过吗

    此外,请查看成批处理。可以使用行构造函数在SQL Server中插入多行

    INSERT INTO <table> (Col1, Col2, Col3)
    VALUES (File1, Val2, Val3),
           (File2, Val2, Val3),
           (File3, Val2, Val3)
    
    插入(Col1、Col2、Col3)
    值(File1、Val2、Val3),
    (文件2,Val2,Val3),
    (文件3,Val2,Val3)
    
    您肯定应该看看与Kshitij Mehta达成一致的批量插入()。到目前为止,使用数据表和大容量插入将是实现这一点的最有效方法。维兰,别忘了标记正确答案。这就是这个地方的运作方式,欢迎来到这里stackoverflow@griegs,虽然我同意我们应该鼓励用户提高投票率并接受答案,但在这种情况下有什么急迫之处?这个问题只提了半个小时。也给其他人一个提交答案的机会。第一个答案不一定是OP能得到的唯一好答案…也许我不清楚。我只处理文件名。文件名已包含我需要的所有信息。例如2011年8月27日13:20:45我的位置用户1.jpg。我对名称进行解码,并将其插入带有列(DateTime、Location、User)的表中。我没有打开文件。在我将文件移动到diff文件夹后,现在我使用Insert语句conn.Open()cmd.ExecuteNonQuery()conn.Close()conn=Nothing cmd=Nothing这是否有效?看起来很慢。需要每秒处理20~50个文件。StoreProc快吗?我需要尽快做到这一点。我想批量插入不适用于这里。请帮助。对于1000行的限制(在SQL server 2008b中),我想添加