SSIS 数据流 - 具有所需外键值的顺序插入

Posted

技术标签:

【中文标题】SSIS 数据流 - 具有所需外键值的顺序插入【英文标题】:SSIS Data Flow - sequential insert with required foreign key values 【发布时间】:2012-11-09 14:29:09 【问题描述】:

是否可以插入到初始表,然后使用插入的 ID 插入到在一个数据流中的列之间具有外键约束的主表?

我是集成服务的新手,不了解功能

场景:

表 A - ID - DESC

表 B - ID - 援助 - DESC

这就是 A_ID 是外键的地方(如果它不明显的话)

我可以使用这种顺序事件流创建单个数据流,还是在插入表 A 后需要创建另一个数据流以插入表 B。

谢谢

【问题讨论】:

【参考方案1】:

数据流中没有优先约束或容器,因此如果您将两个操作放在一个流中,它们会并行执行,这意味着您无法确保它们会按必要的顺序完成。所以只需使用两个数据流,然后您就可以控制控制流中的顺序。

【讨论】:

谢谢。我所做的是取出 FK 约束并在插入两个表后放置它们。 在控制流中多次复制和粘贴数据流使事情变得容易。重命名它们。将它们链接在一起。然后回到里面,删除了不相关的部分。【参考方案2】:

您可以在一个数据流任务中拥有不同的“通道”和不同的导入。这些可以通过使用合并任务进行合并,您可以使用您的 ID 加入。通常,每个“通道”包含一个数据流,代表一个表。

图片来源:http://sqlserverpedia.com/w/images/5/56/CWebb-Dataflow.png

如果您看一下图像,“连接”、“命令”和“会话”任务将各有一个数据流。如您所见,合并任务将处理两个流,因此您可以通过这种方式预处理数据。 (就像有一个你想要的初始表。但这将是并行的!)

如果我说对了,您只是想查找一下。看看here。

【讨论】:

感谢您的回复。我得到你的解释,但这不是我需要的。我有一个数据源,但我需要插入多个表。其中上表中的数据将用于下表。正如我所读到的,我需要一个脚本组件在我插入后从数据库中查询,但我卡在那个点上,因为我不知道为什么“Dts”最终没有作为全局变量出现..【参考方案3】:

如果我理解你的话:

    需要在TABLE A中插入数据 当您在TABLE B 中插入数据时,使用LOOKUP 元素从TABLE A 获取密钥。

【讨论】:

以上是关于SSIS 数据流 - 具有所需外键值的顺序插入的主要内容,如果未能解决你的问题,请参考以下文章

如何在Django中查询具有特定数量的外键关系并且在这些外键值中具有特定值的对象?

mysql表中,表的外键关联自身主键,为啥插入不了数据?

尝试进行分层更新会导致错误“无法插入外键值”

django 插入外键值思路

数据库中 主键与外键的区别?

MySQL:数据管理