0

我在 SQL Server 中创建了一个存储过程,用于测试目的,如下所示:

USE [My_DB]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[INSERT_PRODUCT]
    @id             int,
    @Product_Name   nvarchar(255),
    @Price          money,
    @Quantity       int
AS
BEGIN
    SET NOCOUNT ON;

    INSERT INTO My_Table (id, Product_Name, Price, Quantity)  
    VALUES (@id, @Product_Name, @Price, @Quantity)
END

它工作正常...

然后,我在 SQL Server 中创建了一个与 my_DB 连接的 VBA 代码,并按如下方式填充列:

Public Sub Send_to_DB()

    Dim Conn As ADODB.Connection
    Dim strConn As String
    Dim Cmd As ADODB.Command

    Set Conn = New ADODB.Connection
    strConn = "Provider=My_Provider; Data Source=My_Server;" _
             & "Initial Catalog=My_DB;Integrated Security=SSPI;"
    Conn.Open strConn
    Set Cmd = New ADODB.Command
    With Cmd
        .ActiveConnection = Conn
        .CommandText = "INSERT_PRODUCT"
        .CommandType = adCmdStoredProc
        .CommandTimeout = 0
        .Parameters.Append .CreateParameter("@id", adInteger, adParamInput, , 16)
        .Parameters.Append .CreateParameter("@Product_Name", adChar, adParamInput, 255, "Essaii")
        .Parameters.Append .CreateParameter("@Price", adCurrency, adParamInput, , 155)
        .Parameters.Append .CreateParameter("@Quantity", adInteger, adParamInput, , 9)
        ' repeat as many times as you have parameters

        .Execute
    End With

End Sub

我的输出是 SQL Server 中的一行,声明 id=16 / Product_Name= Essaii / Price=155 / Quantity= 9。

好的,这很酷,我的尝试奏效了。My_DB现在我必须以同样的方式在 SQL Server中插入一个大 Excel 表(大约 50,000 行:)) 。

我应该循环每一行吗?如果是这样,我应该创建一个表对象来存储我的 Excel 表并循环遍历它吗?

我真的很感激这里的一些帮助!

非常感谢您提前帮我解决这个问题。

和平,

4

0 回答 0