【问题标题】:Using Object Datatype Variable as a table name to Query in SSIS在 SSIS 中使用对象数据类型变量作为表名进行查询
【发布时间】:2019-09-11 07:07:47
【问题描述】:

我有一个在 Excel 工作表中动态创建和填充数据的方案。数据在 Sql Server 中可用。我将 Sql 表数据捕获到对象变量中,然后在使用 Excel 连接执行 Sql 任务中,我如何将此对象变量用作表来执行select * into SheetName from [User::Object]

注意:列名不是固定的。每次运行都会改变。

【问题讨论】:

    标签: sql-server sql-server-2008 ssis sql-server-data-tools ssdt-bi


    【解决方案1】:

    有几种方法可以完成这项任务:

    1. 通过 ADO 枚举器:

      通过使用foreach loop 任务并选择ADO Enumerator

      一个例子:Implementing Foreach Looping Logic in SSIS


    1. 作为 ADO 记录集的数据源:

      这可能是一种更难的方法,因为要使用 C# 通过解析传入的object variable 以编程方式创建数据源。然后,它可用于通过仅利用数据流将数据加载到 excel 目的地:

    一个例子:Using The SSIS Object Variable As A Data Flow Source


    更新:由于新要求 - 列名是动态分配的

    也可以使用 C# 以编程方式创建 Excel 文件:

    1. How to create Excel file in C#
    2. Create Excel Files in C#

    【讨论】:

    • 感谢您的建议。问题是列名不是恒定的,这就是我希望执行“select * into”而不是使用 DataFlowTask 进行列映射的原因。
    • @Srikarmogaliraju,那么您还必须以编程方式生成 excel 文件。有很多例子可以google,其中之一:codebyamir.com/blog/create-excel-files-in-c-sharp
    • 我正在使用所有工作表和列标题动态生成 excel。除了使用 C# 脚本之外,我如何进行源与目标映射?我知道元数据映射可以使用 BIML 脚本来完成,但正在寻找一种解决方案,使用“select * into Sheet from Sqltable”直接将其插入到 Execute Sql Task 中。
    • @Srikarmogaliraju,在这种情况下,您必须完全避免数据流并使用脚本任务在 C# 中执行整个操作,因此不再需要列映射。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    相关资源
    最近更新 更多