在ADO.NET源编辑器中使用动态表名称

时间:2017-03-29 19:02:26

标签: sql-server ssis etl sql-server-data-tools ssis-2012

我有一个SSIS数据流任务,我尝试使用 ADO.NET源代码编辑器 将数据从源表加载到SQL Server表中。

问题:

源表名称是动态的,取决于当前日期。

  

示例:如果我想加载今天的数据,那么表格名称将为Sample_03292017_data,如果明天加载数据,那么它将是Sample_03302017_Data

我做了一些研究,并找到了如何将参数传递到 ADO.NET源代码编辑器 以在 where条件中使用但我无法找到有关如何在表名中使用此参数的任何内容。

有谁知道我怎么能做到这一点?我的查询非常简单:

select * from Sample_[DateParameter]_Data.

我正在使用Visual Studio Data Tools 2010。

2 个答案:

答案 0 :(得分:2)

必须在Data Flow Task上设置表达式,而不是Ado.net Source

按照以下步骤设置Ado.net Source的表达式:

    control flow标签中
  1. 点击Data Flow Task,然后按F4以显示属性标签
  2. 点击表情按钮,它会显示如下所示的表格
  3. enter image description here

    1. 选择[Ado.net Source].sqlcommand属性,然后单击表达式构建器按钮
    2. enter image description here

      1. 编写以下表达式"select * from Sample_ " + @[User::DateParameter] + "_Data" (假设您的数据参数存储在名为DateParameter的变量中)
      2. enter image description here

答案 1 :(得分:2)

您应该使用动态SQL来实现此目的。如果您使用ADO.net作为Connection Type,请将以下内容复制并粘贴到SQL语句中:

Declare @SQL VARCHAR(MAX)
SET @SQL = 'Select * from ' + @TABLE
EXEC(@SQL)

在参数页面中,您需要Add新参数@TABLE作为parameter name,并将大小保留为-1@Table变量应由变量设置页面中的expression决定。