gpt4 book ai didi

join - SSIS 合并连接组件写入 0 行

转载 作者:行者123 更新时间:2023-12-04 05:14:25 25 4
gpt4 key购买 nike

首先感谢社区提供的大量信息,在C#和SSIS方面对我帮助很大。第二件事是我的英语不是很好,所以请耐心等待,如果你不明白什么,请问,我会努力让它变得更好。

我从不同的数据库获得了 2 个 OLEDB 连接源,两个表都有一个带有 ID 的列,我将其用作连接键。在 RUT CRUZADOS 中,ID 是浮点数据类型,而在另一个源(CTACTE AÑO PAS)中,我不知道它是哪种类型的数据(我无法使用 sql server 打开数据库,我只能执行 SELECT 操作)。

当我在 Merge 中组合它们时,它不会返回任何错误,但是当我运行程序时,就会发生这种情况。



[SSIS.Pipeline] Information: "component "CARGOS ABONOS" (239)" wrote 0 rows.



在 Microsoft Access 中,“内部联接”返回 4 百万行。我认为问题出在元数据上,但我不知道如何使用“数据转换”。有人可以帮我吗。

谢谢大家

最佳答案

您可以通过双击连接线来查看数据类型,至少就 SSIS 而言是这样。在弹出的数据流路径编辑器中,元数据选项卡将描述列类型。

也就是说,这并不重要,因为 Merge Join 转换只会允许您合并相同类型的数据。

Merge Join要求对源系统数据进行排序。这是通过向流中添加排序组件(不推荐,因为这是一种异步转换,它会占用您的所有内存并降低性能)或通过在源系统中显式排序然后在“高级”选项卡中将它们标记为已排序来实现的。

由于我没有看到排序,这让我相信排序是在源系统中完成的。或者,排序没有在那里完成,但有人将输出标记为已排序。那里必须明确ORDER BY这些源查询中的子句。有时,SQL Server 会以相同的顺序返回数据,但除非有 ORDER BY,否则无法保证。 (我希望我可以使用 flash 标签来强调最后一点)。

future 的读者,如果您在两个系统中都有一个排序并且它们都在同一列上排序,那么您需要检查排序规则。不区分大小写是与区分大小写不同的野兽,基于 ASCII 的系统上的排序产生的排序与使用 EBCIDIC 混合字母数字的排序不同,就像我曾经有过的那样......

由于源数据类型似乎是浮点数,因此排序可能不是罪魁祸首。我突然意识到,你可能有一个更丑陋、更阴险的比较问题,而不是排序问题。浮点数是近似值。 1=1 但 1.00000000000(etc) 可能等于也可能不等于 1.0000000000(etc)1

你真的需要小数位来进行匹配吗?如果不是,则在两个系统中(以及对 CAST 的值进行排序)都转换为整数应该使这些匹配起作用。如果有重要的小数位,那么您将需要将其转换为精确的数字类型(并祈祷它们都以相同的方式转换)。 Access 这样做的事实使我相信 Integer 数据类型将是您的救赎。

关于join - SSIS 合并连接组件写入 0 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14467825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com