在SSIS

时间:2015-05-21 13:51:04

标签: sql ssis

我想在SQL Server 2008+上的2个数据库之间创建一个接口,将几个类似的命名表复制到一个。

我有n个表都具有相同的命名约定,例如:

SalesInvoicePlanning2014ver1
SalesInvoicePlanning2015ver1
SalesInvoicePlanning2015ver2

等。

数字可能有所不同,没有设置开始(或结束),但始终为“int”-Datatype。

我还有一个表“tabledir”,其中包含所有表名作为列表。 (一个字段)该列表中共有30-40个条目(对我来说)不需要的条目。在上面的例子中,我需要30个表中的3个。

计划是使用循环容器

select Top 1([name]) from [tabledir] where name like 'SalesinvoicePlanning%'

然后在以下SSIS数据传输任务中将结果用作变量:

Select * from [variable]

但是,我坚持使用SQL语句在每次迭代时给我所需的表名。

性能不是真正的问题。有什么建议?我错了尝试使用循环容器吗?

1 个答案:

答案 0 :(得分:0)

您可以按照以下步骤进行操作 -

步骤1 - 您可以首先创建SQL任务以将所有表名称放入一个变量,例如,使用您查询的Object(记录集)类型的TableNames。

e.g。从[tabledir]中选择([name])作为TableName,其中名称如' SalesinvoicePlanning%'

步骤2 - 添加foreach循环容器以迭代此变量TableNames,将单个表名称转换为新变量current_table,并将数据流添加到容器中以将数据导入目标表。您的源查询将是 -

之类的表达式

从current_table中选择column_names