SSIS Dynamic table 和数据流中的列数
SSIS Dynamic table and number of columns in data flow
我有一个 table(假设 Table A)列出了大约 10 或 15 个 table,每个列都有不同的 number/names。我需要为所有这些 table 创建一个遵循相同模式的数据流。
所以我在 SSIS 包中有一个 Foreach 循环,它循环遍历 Table A 中的所有记录,将 10 或 15 table 的名称保存在一个变量中并进行数据流操作。
在数据流中,它注册了我给它的第一个默认值 table 的设计,其中有 names/no 列并且它工作得很好,问题是当它通过第二个 table,它有自己的列,这就是它抛出错误的地方,指出 table 的元数据不匹配或类似的东西。基本上 table 定义不同。
如何让 SSIS 动态创建这些 table 的设计,我真的不想每个 table.
有 15 个不同的数据流
请多多指教。
遗憾的是,SSIS 本身不允许这种情况。 SSIS 绑定到元数据,即列名和数据类型;此外,它会在 运行 数据流任务之前检查匹配项。
您必须为每个 table 布局创建一个数据流;您可以使用多个数据流和具有任务优先级约束的条件调用来扩展您的设计。 BIML 可以帮助您根据您的元数据或代码生成 SSIS 包,但限制保持不变 - 数据设计必须在 运行 包之前固定并且不能更改
如果我说有办法呢?
您已被警告过,它既缓慢又复杂! (最差为正常速度的 1/3)
1.you 可以将所有列组合成一个列,并从中创建一个 JSON
我们称它为json_all。
这可以通过 information_schema 和 SSIS 中的一些动态查询来实现。
2.we 有一个只有 1 列的暂存 table,我们将这些数据插入到那个 table。
3.we 打开 JSON 并将其插入最后的 table.
这样您就拥有了所有 table 的固定元数据。 (它们都只有 1 个名为 json_all 的列作为输出,而您的目标 table 只有 1 个与输入同名的列)
如果您有很多行数有限的 table,这将非常有用。 (20 分钟 100 万是我的基准)
我有一个 table(假设 Table A)列出了大约 10 或 15 个 table,每个列都有不同的 number/names。我需要为所有这些 table 创建一个遵循相同模式的数据流。 所以我在 SSIS 包中有一个 Foreach 循环,它循环遍历 Table A 中的所有记录,将 10 或 15 table 的名称保存在一个变量中并进行数据流操作。
在数据流中,它注册了我给它的第一个默认值 table 的设计,其中有 names/no 列并且它工作得很好,问题是当它通过第二个 table,它有自己的列,这就是它抛出错误的地方,指出 table 的元数据不匹配或类似的东西。基本上 table 定义不同。
如何让 SSIS 动态创建这些 table 的设计,我真的不想每个 table.
有 15 个不同的数据流请多多指教。
遗憾的是,SSIS 本身不允许这种情况。 SSIS 绑定到元数据,即列名和数据类型;此外,它会在 运行 数据流任务之前检查匹配项。
您必须为每个 table 布局创建一个数据流;您可以使用多个数据流和具有任务优先级约束的条件调用来扩展您的设计。 BIML 可以帮助您根据您的元数据或代码生成 SSIS 包,但限制保持不变 - 数据设计必须在 运行 包之前固定并且不能更改
如果我说有办法呢?
您已被警告过,它既缓慢又复杂! (最差为正常速度的 1/3)
1.you 可以将所有列组合成一个列,并从中创建一个 JSON
我们称它为json_all。
这可以通过 information_schema 和 SSIS 中的一些动态查询来实现。
2.we 有一个只有 1 列的暂存 table,我们将这些数据插入到那个 table。
3.we 打开 JSON 并将其插入最后的 table.
这样您就拥有了所有 table 的固定元数据。 (它们都只有 1 个名为 json_all 的列作为输出,而您的目标 table 只有 1 个与输入同名的列)
如果您有很多行数有限的 table,这将非常有用。 (20 分钟 100 万是我的基准)