从 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 工具中动态选择表名的主要内容,如果未能解决你的问题,请参考以下文章