我们有一个遗留系统(MAS200,如果您需要知道),并且有一个旧的vbs脚本从MAS中提取数据并在我们的生产SQL数据库中填充两个临时表。经过一些处理/清理后,数据会进入实际表格。
Data flow : MAS200 --> Staging tables --> Production table
为了简化考虑,有一个“Order”父表和一个“Items”子表。订单可以有多个项目,每个项目记录都有一个FK OrderId。因此,在导入期间,我们首先导入订单数据并在“订单”表中创建一个条目,然后获取“项目”条目并导入它们。
基于TRIGGER的现有方法 - 目前我们有两个TRIGGER - 每个登台牌上有一个(订单和物品)。因此,每个新插入都被点击,并且在处理数据之后,将新条目插入到实际生产表中。我唯一关心的是为每个Items条目而不是BULK insert执行触发器。而且似乎不太可管理。
基于SP的方法 - 如果我删除了两个TRIGGER,然后将数据导入到临时表中,最后执行一个SP,它将导入Order数据,然后在Items表中执行BULK插入。这会更有效/更快吗?
它不是一个比较实际上只是一个差异设计。我想知道哪一个看起来更好,或者是否有第三种更好的方法从MAS导入生产SQL db。
编辑1:谢谢。 正如许多人所要求的那样 - 数据量不大或太频繁。让我们每小时说出10-12个订单(20-30个订单)。还有TRIGGERs,我们认为我们没有获得TRANSACTION,但只有两个简单的TRIGGER就足够了。我相信SP需要更多的脚本。
目标:需要尽可能保持简洁,干净和高效。
答案 0 :(得分:1)
使用触发器:
我建议您使用SP以时间间隔传输数据(如果您可以容忍同步延迟)。
答案 1 :(得分:0)
如果你真的想快速接近,你需要:
1)在负载期间禁用ITEMS表上的FK
2)然后加载ORDERS,然后启用FK
所有这一切都应该使用SP完成,触发方法是安全的,但当它来到大容量负载时非常慢
我希望你会发现它很有用
谢谢