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

Dynamically create destination table from source server with SSIS

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

我有一个基于 IBM DB2 (IBMDA400) 的源系统,它有很多表,这些表的结构每天都在快速变化。我必须将指定的表从 DB2 加载到 MSSQL 2008 R2 服务器中。因此我认为使用 SSIS 是最好的选择。

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

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

我不敢相信这太难实现了。为什么数据流任务上没有 "create table if not exist" 复选框?

当然我以前在这里搜索过这个问题,但没有找到解决方案。

提前致谢, 垫

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

  1. 创建一个 File/Table 用于选择源 table。
  2. 重要提示:在您的 SQL 实例上创建一个链接服务器或为 OPENROWSET 创建一个有效的连接字符串(我无法这样做 - 我选择了链接服务器)
  3. 查询来源File/Table
  4. 通过结果集构建循环
  5. 使用变量和脚本任务构建查询
  6. 放下目的地table
  7. 使用 INSERT INTO TABLE FROM OPENROWSET 构建另一个查询字符串(或者如果您使用链接服务器 OPENQUERY)
  8. 执行这条语句

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