从对象插入SSIS
我正在使用非常有限的知识编写SSIS包。我有一个“执行SQL任务”,它从一个视图中检索大约300行。我将结果集放入employeeList对象中 我的下一步是将这些记录插入表中。我尝试创建一个ForEach循环容器,并将我的“executesqltask”放入这个容器中。我的参数映射是:从对象插入SSIS,ssis,Ssis,我正在使用非常有限的知识编写SSIS包。我有一个“执行SQL任务”,它从一个视图中检索大约300行。我将结果集放入employeeList对象中 我的下一步是将这些记录插入表中。我尝试创建一个ForEach循环容器,并将我的“executesqltask”放入这个容器中。我的参数映射是: variable name | direction | datatype| parameter name | parameter size User::employeeList | input
variable name | direction | datatype| parameter name | parameter size
User::employeeList | input | varchar | 0 | -1.
User::employeeList | input | varchar | 1 | -1.
User::employeeList | input | varchar | 2 | -1.
User::employeeList | input | varchar | 1 | -1.
我得到的错误是:错误:0xC002F210在填充数据时,执行SQL任务:执行查询“插入[dbo].[xxxx]([field1],[Perso…”失败,错误如下:“将结果提取到类型为(DBTYPE_STR)”的变量时出错。可能的失败原因:查询有问题,“ResultSet”属性未正确设置、参数未正确设置或连接未正确建立。执行SQL任务很好,但对于您的情况,它听起来就足够了 删除现有内容并将数据流拖到控制流上。双击数据流并添加OLE DB源和OLE DB目标 在OLE DB源中,将OLE DB连接管理器更改为源连接的名称。更改“数据访问模式”从
表或视图
到SQL命令
。前者更容易单击,但与编写等效的SELECT*from mytable
相比,会产生轻微的性能开销。在不再灰显的窗口中,放入查询
SELECT column1, column2, ... FROM dbo.MyView
一般来说,您应该枚举所有需要的列。撤回不需要的列会浪费内存,而这正是SSI快速的原因
将绿色箭头从源连接到“OLE DB目标”。双击它,然后将OLE DB连接管理器更改为目标数据库连接。在其中,将数据访问模式更改为表或视图-快速加载
。这允许我们批量加载数据,而默认的表或视图
会为流经的每一行发出一个insert,这很慢。查找目标表名称,下拉列表中的dbo.xxxx,然后单击“映射”选项卡。它应根据名称匹配自动映射。检查并验证映射是否符合预期。单击“确定”
保存,它应该会工作。执行SQL任务很好,但对于您的情况,它听起来就足够了 删除现有内容并将数据流拖到控制流上。双击数据流并添加OLE DB源和OLE DB目标 在OLE DB源中,将OLE DB连接管理器更改为源连接的名称。更改“数据访问模式”从
表或视图
到SQL命令
。前者更容易单击,但与编写等效的SELECT*from mytable
相比,会产生轻微的性能开销。在不再灰显的窗口中,放入查询
SELECT column1, column2, ... FROM dbo.MyView
一般来说,您应该枚举所有需要的列。撤回不需要的列会浪费内存,而这正是SSI快速的原因
将绿色箭头从源连接到“OLE DB目标”。双击它,然后将OLE DB连接管理器更改为目标数据库连接。在其中,将数据访问模式更改为表或视图-快速加载
。这允许我们批量加载数据,而默认的表或视图
会为流经的每一行发出一个insert,这很慢。查找目标表名称,下拉列表中的dbo.xxxx,然后单击“映射”选项卡。它应根据名称匹配自动映射。检查并验证映射是否符合预期。单击“确定”
保存,它就会工作。我知道你说“知识非常有限”但是,您是否有意识地决定了为什么要将数据加载到对象中,然后对其进行迭代?我遵循的是一个教程:。请告诉我是否有更好的方法来执行此操作。您试图解决什么问题?您只是想将数据从该视图移动到某个表中吗?我知道您表示“知识非常有限”但是,您是否有意识地决定了为什么要将数据加载到对象中,然后对其进行迭代?我遵循的是一个教程:。请告诉我是否有更好的方法来执行此操作。您试图解决的问题是什么?您只是试图将数据从该视图移动到某个表中吗?