sql-server - 在 SSIS 中,如何查找值的 ID,如果不匹配,则插入值并返回 ID
问题描述
使用 SSIS,我将分阶段提取加载到其主数据库中。该过程的一部分是使用 LOOKUP 来获取字符串值的 ID,如果它不存在,则将其插入引用表(使用 OLE DB COMMAND)并通过后续查找返回该 ID。
LOOKUP 表示即使插入后前 50 个值也不匹配。有没有办法解决这个问题?或者,我应该尝试另一种方法吗?
一些研究/尝试...
最初,没有返回任何匹配项。我不得不将所有查找更改为“无缓存”,以便重新加载引用表(它们非常小,所以我怀疑我会有很大的性能问题)。
我见过的另一种方法是多播到不同的查找中(基于我正在查找的列),并在我成功插入/查找它们后将它们合并在一起。但是从我读到的内容来看,这种方法存在严重的性能问题。
我希望查找匹配或不匹配。如果不匹配,插入新值;然后,再次查找 ID 的值(如果不匹配,则失败)。联合原始匹配和原始不匹配以进行下一次查找。
解决方案
试试这个模式:
1.You are multicasting the dataset and grouping by just your lookup column
2.inserting your lookup and adding the scopeidentity(lookupid) to you grouped data
3.joining in the data you inserted to effective add your lookup value to every row
4.unioning your data back in
我不肯定,但您可能需要添加排序才能使用合并连接。
推荐阅读
- c# - C# 打印 pdf 和进程重叠
- android - PlatformException(错误,java.lang.IllegalStateException:尝试创建未注册类型的平台视图:plugins.flutter.io/webview
- rust - 如何覆盖 Rust 中特定类型的 trait 实现?
- drupal-8 - drupal 8 使用钩子表单更改在注册表单上添加链接
- javascript - 如何正确划分前端和后端之间的任务?
- python - 将 .hyper tableau 文件转换为 pandas 数据框时出错
- javascript - 谷歌分析视图中没有浏览量(但显示了事件)
- html - 通过 Identityserver4 成功认证后如何重定向到客户端回调页面?
- python - 我需要将登录的网页转换为 PDF。如何将 selenium get_cookies() 获得的 cookie 传递给 pdfkit?
- c# - 当应用程序被任务调度程序触发时,FindElement() 不工作