excel - 导入带有 SSIS 的 Excel (.xlsx) 和带有包含多个小节的工作表的 Excel 源

标签 excel import ssis

我需要你的帮助。
我有一个 .xlsx 文件,如下所示:
enter image description here
我的目标是创建一个 SSIS 包,将这些数据推送到数据库表中。
现在,col1 到 col5 没问题,但是每个部分都有一个名称,并且应该是表中的第 6 列。
所以最终的目标表看起来像:
col1 | col2 | col3 | col4 | col5 | col6(名字从上到下的姓氏)
到目前为止,我已经尝试过:

  • 从 Excel 表中创建记录集
  • 使用 Ado foreach 枚举器逐行读取记录集
  • 在每个枚举器中,我有一组变量代表列
  • 我将这些变量冲出到转换的数据流任务中
    变量到使用派生列的列,并将其推送到 ODBC 目标

  • 显然这对我不起作用,当我运行包时,我总是收到消息“0 行已插入 ODBC 目标”。
    老实说,我不确定如何解决这个问题。
    任何帮助都非常感谢!!!
    提前致谢!!!
    编辑:
    PS:我不能在这里使用任何一次或 Power BI/Query 技巧。它必须是纯 SSIS。

    最佳答案

    我能想到的解决方案是通过脚本任务,在这些步骤中

  • 从第 4 行读取 Excel 文件
  • 将名称添加到数据行的脚本任务
  • 通过条件拆分删除列标题
  • 第一步打开 Excel 源属性,取消选择第一行中的列名,并将 OpenRowset 设置为从第四行读取 (Sheet1$A4:E):

  • enter image description here
  • 第二步创建一个脚本组件转换。选择 5 列作为输入并创建一个新的输出变量(在本例中为名称)

  • enter image description here
    脚本本身:
    public class ScriptMain : UserComponent
    {
    
    
        string keepname;
        
        public override void Input0_ProcessInputRow(Input0Buffer Row)
        {
            if (Row.F5_IsNull)
                { keepname = Row.F1;
                
            }
            else
            {
                if (Row.F5 != "col5")
                {
                    Row.Name = keepname;
                }
    
            }
        }
        
    }
    
    说明:检查它是否是包含名称的行(col5 为空),因此,它将名称保存到变量 keepname。
    如果不是这样,并且它不是标题(col1='col1'),则更新变量名称。
  • 最后一步只是通过条件拆分进行清理

  • enter image description here
    这样做是拆分“名称行”或标题的行。你只需要携带一个默认输出。
    测试:
    enter image description here

    关于excel - 导入带有 SSIS 的 Excel (.xlsx) 和带有包含多个小节的工作表的 Excel 源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67506406/

    相关文章:

    c# - 用 C# 填充 excel 表

    import - Angular2 CLI Socket.io(第 3 方库导入)

    c++ - 导入C++模块,如果失败: import Python version?

    sql-server - 检查sql语句是否返回ssis中的空记录集

    excel - SUMPRODUCT 与 SUMIFS

    vba - 将选定单元格的导出写入不带 "quotation marks"的 .txt 文件

    python - 使用 pandas 过滤 excel 工作表中的条件格式

    import - Webpack 找不到带有 Typescript 导入的 keymirror 模块

    sql-server-2005 - 在 SSIS 中使用表达式的 FTP 连接字符串

    c# - System.ArgumentException : Object is not an ADODB. RecordSet 或 ADODB.Record