【问题标题】:SSIS Lookup data updateSSIS 查找数据更新
【发布时间】:2016-07-28 10:40:41
【问题描述】:

我创建了一个 SSIS 包,它从 CSV 文件中读取数据并加载到 table1 中。其他数据流任务在表 1 上进行查找。表 1 具有列 x、y、z、a、b。表 2 具有列 a 、 b 、y、z 查找是基于列 y 和 z 完成的。基于列 y 和 z ,它从表 1 中提取 a 和 b 并更新表 2 。问题是数据得到了更新,但我得到了多行数据,其中一行没有更新,另一行在更新后。

如果需要,我可以提供更清晰的解释。

【问题讨论】:

  • 请提供需要的帮助专家!
  • 你肯定需要更清楚的解释。 “一个没有更新,一个有更新”是什么意思?也许你应该学会在更新语句中这样做,而不是在 SSIS 中摆弄
  • '一个没有更新,一个有更新'的意思是我有一个数据行 Event_ID Model_Dsc Model_Cd Derivative_Cd VIN 长度 (cm) 宽度 (cm) 高度 (cm) 1 L405 Range Rover T1 QVBW NULL NULL NULL NULL Afer 更新 - Event_ID Model_Dsc Model_Cd Derivative_Cd VIN 长度 (cm) 宽度 (cm) 高度 (cm) 5 L405 Range Rover T1 QVBW NULL 5199 2073 NULL 理想情况下我应该只得到 1 行,第二行。
  • 描述你的包是如何执行更新的。除了 CSV 源和查找之外,您的数据流中还有哪些其他组件?
  • 我有 2 个数据流任务。数据流任务1正在读取一个csv文件并加载到表1中。数据流任务2将源作为表2,然后数据转换,然后根据列代码和描述查找。根据查找,从表 1 和填充表 2 中获取长度、宽度和高度的值。我希望我很清楚。请感谢您的帮助。

标签: ssis


【解决方案1】:

根据 Nick 的建议,我会删除您的第二个数据流(表 2 到表 2 中的那个)。

在填充表 1 的第一个数据流之后,只需执行一个执行 SQL 任务,对表 2 执行更新,并连接到表 1 以获取新数据。

编辑回应评论:

您需要使用唯一匹配行的 WHERE 子句。显然Model_Cd 不是JLRMODEL_DIMS 中的唯一列。如果由于两个表之间的关系而无法使 WHERE 子句唯一,则需要选择聚合 [Length (cm)],如 MIN()MAX() 等,或者需要使用 TOP 1,以便只从子查询中获取一行。

【讨论】:

  • 更新 JLR_EVENTS SET [长度 (cm)] = (SELECT [Length (cm)] FROM JLRMODEL_DIMS WHERE JLR_EVENTS.Model_Cd = JLRMODEL_DIMS.Model_Cd);查询问题..错误 - 错误:子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。
  • 谢谢,它适用于 TOP1 。我想知道为什么我不能这样做。无论如何,谢谢你的帮助。真正的宝石!
  • 嗨选项卡,当我在服务器上部署 JOb 时,它说找不到文件。任何想法。这些服务器上没有安装 MS Excel,该软件包从路径中提取一个 CSV 文件并写入数据库。帮助将不胜感激
  • 您需要打开一个新问题,以便提供有关此问题的更多详细信息。
  • 嗨标签,已经发布了一个单独的问题。请看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-10
  • 1970-01-01
相关资源
最近更新 更多