读取 excel 源代码并根据 ssis 中的标题运行 sp

Posted

技术标签:

【中文标题】读取 excel 源代码并根据 ssis 中的标题运行 sp【英文标题】:Read an excel source and run the sp's based on headers in ssis 【发布时间】:2021-06-07 01:07:17 【问题描述】:

我有一个 Excel 工作表 Sheet1$

Report1 Report2 Report5 Report6
value1 value1 value1 value1
Two value2 value2

我在数据库中有几个 SP,这个工作表有 SP 的参数

根据工作表中的标题名称,我们必须传递参数并运行该 sp。

示例:

在此工作表中,我必须运行报告 1、报告 2、报告 5、报告 6,其中报告 3 和报告 4 不存在。

我必须相应地使用每列中的参数运行上述操作。 (注意:参数必须作为字符串传递) SP 的结果应再次保存在工作表中。

有人可以帮我解决这个问题吗?

提前致谢

【问题讨论】:

我必须运行 report1 吗?你的意思是运行一个SP? 是的。我必须根据报告标题运行相应的 SP。我有 6 个标题和 6 个 sp。基于excel中提到的标题。我们必须运行所需的报告 那么根据你分享的样本,只有5个SP会被执行? 根据Excel工作表参数,4个sp应该按照表头执行 【参考方案1】:

我用过 ADODB。

片段(函数 SQL_EXEC...)

Dim B As Boolean
Dim C As ADODB.Command
Dim I As Long
Dim P As ADODB.Parameter
Dim V As Variant

   Set C = New ADODB.Command
   C.ActiveConnection = glob_CONNECT
   C.CommandType = adCmdStoredProc
   C.CommandText = X.SQL_Name
   
   ' bind Inputparameter
   If X.NInParams > 0 Then
      For I = 1 To X.NInParams Step 1
         Set P = C.CreateParameter(X.InParam(I).SQL_Name, _
                                   X.InParam(I).ADODB_Type, _
                                   adParamInput, _
                                   X.InParam(I).SQL_Size, _
                                   X.InParam(I).SQL_Value)
         C.Parameters.Append P
      Next
   End If
   
   ' bind Outputparameter
   If X.NOutParams > 0 Then
      For I = 1 To X.NOutParams Step 1
         Set P = C.CreateParameter(X.OutParam(I).SQL_Name, _
                                   X.OutParam(I).ADODB_Type, _
                                   adParamOutput, _
                                   X.OutParam(I).SQL_Size)
         C.Parameters.Append P
      Next
   End If
   
   ' Execute SP (Errors are possible!)
   On Error GoTo 0
   On Error Resume Next
   C.Execute
   
   ' Error?
   If Err.Number <> 0 Then
      SQL_EXEC = False
      Exit Function
   End If

   ' Fetch Output
   If X.NOutParams > 0 Then
      For I = 1 To X.NOutParams Step 1
         V = VNormExec(C.Parameters(X.OutParam(I).SQL_Name), X.OutParam(I).SQL_Type)
         X.OutParam(I).SQL_Value = V
      Next
   End If

【讨论】:

以上是关于读取 excel 源代码并根据 ssis 中的标题运行 sp的主要内容,如果未能解决你的问题,请参考以下文章

SSIS Excel 连接管理器:文件只能在选择了错误的 Excel 版本时才能读取

如何根据SSIS中的创建日期读取文件夹的所有文件?

SSIS 暂存截断仓库

SSIS Excel 数据导入 - 行中的混合数据类型

如何遍历 Excel 文件并使用 SSIS 包将它们加载到数据库中?

无法在 SSIS 2017 中的 excel 连接管理器上使用表达式