我在不同的服务器上有两个数据库。两个数据库具有相同的架构。我们需要将数据从一个数据库移动到另一个数据库,如果记录只存在于目标上,则应该将其删除。我在 SSIS 中有以下场景要解决。
成分表根据食谱保存成分,每个食谱都属于一个“包。
Package --> Recipe --> Ingredient
包装是顶级的,然后是配方,然后是成分。我们逐包移动数据。SSIS 包已经到位,它采用 PackageId 并将所有食谱和成分移动到目标数据库。Target 数据库中没有 Package 表,因为我们使用它来打包数据以进行数据移动。现在的场景是,
- 我们正在移动 PackageId = 1 的 Package
- 假设包 1 有两个食谱,并且这些食谱已经存在于源和目标中,但是目标上的食谱有更多的成分,例如源包 1 有 RecipeA 和 RecipeB。这两个食谱已经存在于 Destination 中。但目的地食谱 B 有更多的成分。我需要删除那些额外的成分。
我不能使用执行 SQL 任务,因为源数据库和目标数据库位于不同的服务器上。谁能建议如何在数据流中做到这一点?
想到以下设计。
- 查找 SOURce 上包 XYZ 中存在的所有 RecipeId。
将其与相同的食谱进行比较,找出仅在目的地存在的成分。
源数据库
成分表
ID 名称 RecipeId
配方表
RecipeId 名称 PackageId
包表 PackageId 名称
*目标数据库* *
成分表 ID 名称 RecipeId
配方表 RecipeId 名称 BundleId