我在 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 表并循环遍历它吗?
我真的很感激这里的一些帮助!
非常感谢您提前帮我解决这个问题。
和平,