gpt4 book ai didi

excel - SSIS 2017 循环遍历 Excel 文件并从脚本任务中获取文件名

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

我被困在上面。

概述

我创建了一个 SSIS 包,它遍历一个包含 excel 文件的文件夹,从这些文件中提取数据并插入到 SQL 表中。

每天都会按照 30 03 2020、31 03 2020、01 04 2020 等方式创建一个新文件夹。

我的包裹处理这个问题,并且从头到尾运行顺利。

但是,我想通过派生列将文件名添加到目标 SQL 表中的每组数据中。

这是我有问题的地方。

我可以添加完整的文件路径和名称,但我似乎无法自行提取文件名。

环境

我创建了一个 ForEachLoop 容器,其中我将枚举器设置为“Foreach 文件枚举器”,添加到文件夹的完整路径并将文件设置为“.xl”

检索文件名设置为“完全合格”

在变量映射中,我添加了一个名为 strFullFilePath 的变量,索引为 0。

然后我添加了数据流和最近的脚本任务。

从数据流中,我拖入了一个 Excel 源。

我通过输入我想要加载的文件之一的完整路径和文件名来创建 Excel 连接管理器。

我将数据访问模式设置为变量中的 SQL 命令。

保存后,我将 Excel 连接管理器属性设置为在运行时将动态文件名传递给 Excel 连接字符串,方法是将 @[User::strFullFilePath] 变量添加到 ExcelFilePath 表达式。

最后,我为我的目标表创建了一个 OLE DB SQL SERVER 目标并映射了这些字段。

包运行没有问题并加载了所有文件,直到我添加了脚本任务并遵循了我在网上看到的一些建议。

脚本任务当前配置如下:-

微软 Visual Basic 2017

入口点:- 主要

ReadWriteVariables:- User::strFullFilePath

当您编辑脚本时,我拥有的代码是:-

公共(public)子主()

    Dts.Variables("strFullFilePath").Value = System.IO.Path.GetFileName(Dts.Variables("strFullFilePath").Value.ToString())

Dts.TaskResult = ScriptResults.Success

结束子

当我现在运行包时,脚本任务似乎执行正常,但主 Excel 文件加载失败并显示“[Excel Main Data Source [2]] 错误:无法从数据源检索列信息。确保数据库中的目标表可用。”

我不确定,但看起来包现在认为文件路径是我们在 For Each 循环容器中输入的 0。

我尝试了许多不同的场景,将“User::”放在脚本中的变量名之前,还尝试了以下操作:-

Dts.Variables("strFileName").Value = System.IO.Path.GetFileName(Dts.Variables("strFullFilePath").Value.ToString())

但这只是给了我一个 DTS 脚本任务:运行时错误:- 调用目标抛出了异常。

我现在完全被难住了。

任何帮助/建议将不胜感激。

问候,

新泽西州

最佳答案

我想我可能已经解决了这个问题。
我在 strFullFileName 下的 For Each Loop 容器中添加了一个变量 strFileName,索引为 1。
我已将 VB 脚本修改为:-

Dts.Variables("strFileName").Value = System.IO.Path.GetFileName(Dts.Variables("strFileName").Value.ToString())
我现在可以在 Debug Locals 窗口中看到文件名并将结果发布到表中。

关于excel - SSIS 2017 循环遍历 Excel 文件并从脚本任务中获取文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60996496/

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