首页 文章

使用SSIS从源服务器动态创建目标表

提问于
浏览
1

我需要一些建议如何解决以下任务:

我有一个基于IBM DB2(IBMDA400)的源系统,它有很多表,它们在结构上快速变化 . 我必须将指定的表从DB2加载到MSSQL 2008 R2 Server中 . 因此我认为使用SSIS是最佳选择 .

我的第一次尝试只是添加两个数据源,删除MSSQL中的所有表,并使用“Select * Into @Table From @Table”重新创建它们 . 但是由于无法连接两个OLEDB连接,我无法正常工作 . 我也尝试使用Openrowset语句,但出于安全原因,SQL Server不允许这样做,我不允许更改它 .

我的第二次尝试是从源手动读取表并删除并使用for循环重新创建表,然后通过数据流任务加载数据 . 但我不得不从执行SQL任务获取元数据...所以我没有列名称和类型 .

我无法相信这太难以实现 . 为什么数据流任务上没有“如果不存在则创建表”复选框?

当然我之前在这里搜索过这个问题,但找不到解决方案 .

提前谢谢,Pad

1 回答

  • 1

    这是我最后得到的解决方案:

    • 创建用于选择源表的文件/表 .

    • 重要:在SQL实例上创建链接服务器或为OPENROWSET创建工作Connectionstring(我无法这样做 - 我选择了链接服务器)

    • 查询源文件/表

    • 在结果集中构建循环

    • 使用变量和脚本任务来构建查询

    • 删除目标表

    • 使用INSERT INTO TABLE FROM OPENROWSET构建另一个查询字符串(或者如果您使用了链接服务器OPENQUERY)

    • 执行此声明

    完成 . 正如我上面所说,我对此不太满意,但现在应该没问题 . 如果我有另一个解决方案,我会更新这个 .

相关问题