从 VS Data 工具中动态选择表名

Posted

技术标签:

【中文标题】从 VS Data 工具中动态选择表名【英文标题】:Dynamically select table names from VS Data tool 【发布时间】:2019-12-09 19:59:44 【问题描述】:

我有一个将数据从源表同步到目标表的 SSIS 包。但是,我正在寻找一种解决方案,每当程序包运行时,它都会自动选择上个月的表,即(TableName-1)。例如 在表名的末尾。

我通过 VS Data 工具的源代码在 SSIS 包中使用了以下内容,但没有奏效。我有错误我必须做的任何进一步的步骤?

declare @year varchar(200) = 'TABLE1'
set @year = @year + CONCAT(DATEPART(mm,getdate())-1,DATEPART(yyyy,getdate()))
select @year as result 

【问题讨论】:

我没有收到该代码的错误:DB<>Fiddle。如果您遇到错误,请将其包含在您的问题中,并为我们提供一种复制方法。 【参考方案1】:

Chaitanya,您的查询运行正常并获得您想要的匹配输出。

您是否正在为此寻找其他选择?

【讨论】:

但是当我使用 Visual Studio 源 OLE DB“sql 命令”中的相同时,这不起作用。有没有我可以尝试的其他潜在解决方案。【参考方案2】:

您也可以从 information_schema 方面解决您的问题。

declare @LastMo date = dateadd(month,-1,getdate())
declare @LastMoText  varchar(6) = right('0' + cast(month(@LastMo) as varchar(2)) , 2)
                       + cast(Year(@LastMo) as varchar(4))

select table_name
from INFORMATION_SCHEMA.tables
where left(TABLE_NAME,6) = 'table1'
    and right(table_name,6) = @LastMoText

这会让您知道该表是否存在。因此,如果您将其放入 foreach 循环中,您的程序包不会失败。

    执行 SQL --> 上面的 SQL 并将结果存储在 ADO.Object 变量中。

    Foreach ADO 对象

    将每个循环存储到名为@table 的变量中

    设置@SQL = "SELECT * FROM" + @table

    从@SQL 添加数据流和源

【讨论】:

我也修正了你上个月的逻辑。按照你的逻辑,一月份会发生什么?

以上是关于从 VS Data 工具中动态选择表名的主要内容,如果未能解决你的问题,请参考以下文章

vs2019怎么添加ADO Data控件

vs中怎样操作mysql数据库

vs2015怎么连接mysql

为什么我在一个vs项目中添加了第三方控件,我在新开一个vs环境其工具栏中就没有我所添加的第三方控件了呢?

VS做自己的工具集

#转#VS2012 正则表达式 动态插入 动态替换 (查找和替换工具)