gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 03:26:39 25 4
gpt4 key购买 nike

我需要你的帮助。
我有一个 .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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com