Эффективный способ переноса строк из Excel в SQL Server - PullRequest
0 голосов
/ 22 июня 2019

Мне нужна помощь, у меня есть этот код, который переносит строки из моего файла Excel в SQL Server:

Sub Sql_Click()
    Dim cnn As New ADODB.Connection
    Dim iRowNo As Long
    Dim qDATE, qSOURCE, qDESTINATION, qREFERENCE, qItemCode, qDescription, qUM, qPRICE, qQTY, qAMT, qMFG, qEXP, qLOT, qTRANSACTION, qConsignor, qDRDATE As String
    Dim strSQLQuery As String

    With Workbooks("test.xlsx").Sheets("DATABASE")

    cnn.ConnectionString = "Provider=SQLOLEDB;Data Source=***,1433;Initial Catalog=***;User ID=***;Password=***;"

    cnn.Open

    cnn.Execute "delete from DelTrans2"

    iRowNo = 2

    Do Until .Cells(iRowNo, 1) = ""
            qDATE = .Cells(iRowNo, 1)
            qSOURCE = .Cells(iRowNo, 2)
            qDESTINATION = .Cells(iRowNo, 3)
            qREFERENCE = .Cells(iRowNo, 4)
            qItemCode = .Cells(iRowNo, 5)
            qDescription = .Cells(iRowNo, 6)
            qUM = .Cells(iRowNo, 7)
            qPRICE = .Cells(iRowNo, 8)
            qQTY = .Cells(iRowNo, 9)
            qAMT = .Cells(iRowNo, 10)
            qMFG = .Cells(iRowNo, 11)
            qEXP = .Cells(iRowNo, 12)
            qLOT = .Cells(iRowNo, 13)
            qTRANSACTION = .Cells(iRowNo, 14)
            qConsignor = .Cells(iRowNo, 15)
            qDRDATE = .Cells(iRowNo, 16)

            cnn.Execute "insert into " & Range("D2").Value & " (DATE, SOURCE, DESTINATION, REFERENCE#, ITEMCODE, DESCRIPTION, UM, PRICE, QTY, AMOUNT, MFG, EXP, LOT, TRANS, CONSIGNOR, DRDATE) values ('" & qDATE & "','" & qSOURCE & "','" & qDESTINATION & "','" & qREFERENCE & "','" & qItemCode & "','" & qDescription & "','" & qUM & "','" & qPRICE & "','" & qQTY & "','" & qAMT & "','" & qMFG & "','" & qEXP & "','" & qLOT & "','" & qTRANSACTION & "','" & qConsignor & "','" & qDRDATE & "')"

            iRowNo = iRowNo + 1
        Loop

        MsgBox "Saved to database!"

        cnn.Close
        Set cnn = Nothing

    End With
End Sub

Я просто хочу знать, есть ли гораздо более эффективный способ сделать то же самоеуловка, этот код занимает более или менее 8 секунд, прежде чем он может успешно передать данные на SQL Server.

РЕДАКТИРОВАТЬ: я забыл сказать, что данные будут поступать с test.xlsx, как вы можете видеть в моемкод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...