我想在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语句在每次迭代时给我所需的表名。
性能不是真正的问题。有什么建议?我错了尝试使用循环容器吗?
答案 0 :(得分:0)
您可以按照以下步骤进行操作 -
步骤1 - 您可以首先创建SQL任务以将所有表名称放入一个变量,例如,使用您查询的Object(记录集)类型的TableNames。
e.g。从[tabledir]中选择([name])作为TableName,其中名称如' SalesinvoicePlanning%'
步骤2 - 添加foreach循环容器以迭代此变量TableNames,将单个表名称转换为新变量current_table,并将数据流添加到容器中以将数据导入目标表。您的源查询将是 -
之类的表达式从current_table中选择column_names