gpt4 book ai didi

sql-server - 从 Oracle 到 SQL Server 的数据流任务中源和目标的动态列映射

转载 作者:行者123 更新时间:2023-12-02 17:58:15 26 4
gpt4 key购买 nike

我们在 Oracle 中有大约 5000 个表,在 SQL Server 中也有同样的 5000 个表。每个表的列经常变化,但在任何时间点源列和目标列将始终相同。创建 5000 个数据流任务是一个很大的痛苦。此外,每次表定义更改时都需要进行映射,例如添加或删除列时。

尝试过 SSMA(针对 Oracle 的 SQL Server 迁移协助),但传输大量数据然后迁移到 SSIS 时速度非常慢

我在 SSIS 中遵循了以下方法:

  1. 我创建了一个临时表,其中包含表名称、源查询(oracle),目标查询(SQL server)在执行中使用该表SQL任务并将结果集存储为完整结果集

  2. 为执行 SQL 任务结果集的每个循环容器创建以及对象和 3 个变量表名称、源查询和目的地查询

  3. 在数据流任务源中,我选择了 Oracle 的 OLE DB 源连接并选择数据访问模式作为 SQL 命令变量(从循环映射变量传递源查询)

  4. 在数据流任务目标中,我选择了 SQL 的 OLE DB 源连接并选择数据访问模式作为 SQL 命令变量(从循环映射变量传递目标查询)

并为所有 5000 个表循环它..它不起作用,您能否指导我们如何使用 SSIS 从 Oracle 到 SQL Server 动态地为 5000 个表创建它。任何示例代码/帮助将不胜感激。提前致谢

最佳答案

使用 SSIS,在考虑动态源或目标时,您必须考虑到唯一可以做到的情况是元数据在运行时定义良好。对于您的情况:

Each table columns vary frequently but at any point of time source destination columns will always same.

您必须考虑以编程方式构建包,而不是循环遍历表。

是的,如果您可以根据表的元数据(列名称、数据类型...)将表分组,则可以使用循环。然后您可以为每个组创建一个包。

如果您熟悉 C#,您可以动态导入表,而无需 SSIS。您可以引用以下项目来了解有关使用C#从oracle读取并导入到SQL的更多信息:

<小时/>

我将提供一些链接,您可以引用这些链接来获取有关以编程方式创建包和动态列映射的更多信息:

关于sql-server - 从 Oracle 到 SQL Server 的数据流任务中源和目标的动态列映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57005202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com