我有一张桌子,它有500行.我想只检索10行,我想只使用控制流插入另一个表.通过数据流任务我们可以使用OLEDB源和OLEDB目的地.但我希望通过使用执行sql任务和每个循环的方式得到结果.有可能这样做吗?我的想法是,获取十个记录的集合,并通过使用foreach循环迭代到每一行并使用execute sql task插入到表中.目标表需要动态创建.我尝试了一些方法,但没有走向.请找到图像文件.
从Northwind取的例子
创建变量(在变量集合中),表示将在运行时创建的表中的列示例: -
Customer_ID as string
Order_Id as int
Run Code Online (Sandbox Code Playgroud)
然后你需要创建执行SQL任务并编写以下查询来选择前10行
Select top 10* from orders
Run Code Online (Sandbox Code Playgroud)
使用FullResultSet并在Result Set配置中将表行存储在variableName中: - User :: Result ResultName:0
删除一个执行SQL任务并在运行中创建一个表
IF OBJECT_ID('myOrders') IS not NULL
drop table myOrders
Create table myOrders
(OrderID int,
CustomerID varchar(50)
)
Run Code Online (Sandbox Code Playgroud)
合并来自Execute sql任务的2个流并将其连接到Foreach循环
拖动foreach循环.在集合中使用枚举器类型作为Foreach ADO枚举器在枚举器配置中选择user :: Result变量,它存储执行sql任务的前10行并选择单选按钮"第一个表中的行"在变量映射中,映射您在第一步中创建的列变量,索引将为0表示第一列,1表示第二列

在foreach循环中拖动执行sql任务并编写以下查询:
Insert into myOrders( OrderID,CustomerID)
values
(?,?)
Run Code Online (Sandbox Code Playgroud)
在execute sql task中使用参数映射配置映射参数
VariableName : OrderID Direction : Input DataType=Long ParamterName=0
VariableName : CustomerID Direction : Input DataType=varchar ParamterName=1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13661 次 |
| 最近记录: |