none
大量匯入文字檔到SQL Server 2000 RRS feed

  • 問題

  • 您好:

     

    假設我有100個txt的文字檔(TEXT001.txt ~ TEXT100.txt

    裡面都是用「,」為間格的資料

     

    以下是我本來的做法:

     

    我在Visual Basic 裡用OLE DB,如下

    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\txtFilesFolder\;Extended Properties="text;HDR=Yes;FMT=Delimited";
     
    然後再用
    selectCmd = "Select * From TEXT001.txt "
    cmd = New OleDbCommand(selectCmd, conn)
    dataReader = cmd.ExecuteReader()
    While dataReader.Read
    s1 = dataReader.Item(0)
    s2 = dataReader.Item(1)
    s3 = dataReader.Item(2)
    s4 = dataReader.Item(3)
    s5 = dataReader.Item(4)
    selectCmd1 = "Insert into Tab01(A, B, C, D, E) " & _
                                                     "Values(" & s1 & "," & s2 & "," & s3 & "," & s4 & "," & s5 & ")"
     cmd = New OleDbCommand(selectCmd1, conn1)
    cmd.ExecuteNonQuery()
    End While
     
    用這樣的方法,分別去開那100的文字檔
    然後一筆一筆的存進資料庫裡面
    速度有點慢,但還可以接受
     
    後來我看了一篇文章
     
    所以我後來用這個方法
    selectCmd = "INSERT INTO Tab01(A, B, C, D, E) SELECT * FROM " & _
    "OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', " & _
    "'Data Source=C:\;" & _
    "Extended Properties=text')...[TEXT001#txt]"
     

    cmd = New OleDbCommand(selectCmd, conn1)
    cmd.ExecuteNonQuery()

     

    原本以為用這個方法可以更快速的匯入資料到SQL Server

    結果反而更慢

     

    想請問為什麼一筆一筆的插入資料庫反而比上面這個方法快呢??

     

    有沒有其他更快速的方法可以直接將大量的文字檔匯入到SQL Server 裡面?

     

    感謝!!

    2007年8月27日 上午 05:16

解答

所有回覆