逐个插入数千条记录

时间:2011-08-26 03:30:13

标签: vb.net sql-server-2008

...编辑

可能我在原帖中并不清楚。我只处理文件名。

文件名已包含我想要的所有信息。 例如。 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个文件/秒。可能是一个存储过程?

我需要尽快做到这一点。我认为批量插入不适用于此。

请帮忙。

2 个答案:

答案 0 :(得分:1)

你看过SSIS吗?

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

INSERT INTO <table> (Col1, Col2, Col3)
VALUES (File1, Val2, Val3),
       (File2, Val2, Val3),
       (File3, Val2, Val3)

答案 1 :(得分:0)

就SQL而言;

  1. 正确获取索引
  2. 使用交易并在最后提交。
  3. 至于移动文件;

    你没有说文件有多大。如果它们很小,那么当你处理它们时,你可以移动它们。

    如果它们很大,那么以后可能会处理它们。您可以使用MSMQ我想在有时间或处理器时间时移动文件。

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

    修改

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

    .Net可以自动监控文件夹中的新文件并开始一个过程。