【问题标题】:Excel file source SSIS, Excel file name retrievalExcel文件源SSIS,Excel文件名检索
【发布时间】:2017-01-14 16:47:56
【问题描述】:

我有一个 SSIS 包,我试图将数据从 Excel 文件源加载到 OLE DB 目标中。我想将文件名也加载到目标表中,而不是原始文件名的一部分。

谁能为此提供一些提示?

Screenshot of the SSIS package

【问题讨论】:

  • 能否参数化 Excel 源连接管理器文件名,然后在需要的地方使用该参数?由于开发测试和实际环境的差异,我还是倾向于这样做

标签: ssis


【解决方案1】:

如果您不想参数化,则使用脚本任务,捕获连接字符串,然后使用子字符串从连接字符串中提取 ExcelFileName。

步骤如下:

  1. 首先创建一个字符串类型的变量“FileName”。
  2. 接下来,使用 Script 任务,将上面创建的变量添加到 ReadWriteVariables 中
  3. 在你的脚本任务中使用这个脚本

      public void Main()
        {
            // TODO: Add your code here
            ConnectionManager con = Dts.Connections["EX_SRC_CON"];
            string conStr = con.ConnectionString;
            int firstCharacter = conStr.LastIndexOf("\\");
            int lastCharacter = conStr.IndexOf(".xlsx");
            string fileName = conStr.Substring(firstCharacter + 1, (lastCharacter - (firstCharacter + 1)));
            Dts.Variables["User::FileName"].Value= fileName;
            Dts.TaskResult = (int)ScriptResults.Success;
        }
    

请注意,“EX_SRC_CON”是您的 Excel 连接管理器,我们将仅从中提取 Excel 文件名。从脚本中可以看出,我们正在将 Excel 文件写入字符串“FileName”

  1. 接下来,将脚本任务连接到您的数据流任务 (DFT)。在 DFT 中,在 Excel 源中,选择数据访问模式:“SQL 命令”并使用以下脚本

    选择 *, ? FROM [PolicyList$]

PolicyList$ 是您的工作表名称,我们需要将变量“FileName”映射到 ?在“参数”选项卡下。

  1. 接下来将列从 Excel 源连接到您的 OLE DB 目标。

【讨论】:

    猜你喜欢
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多