【问题标题】:Match entries between two different tables on two different servers record-by-record逐条匹配两个不同服务器上两个不同表之间的条目
【发布时间】:2017-02-07 16:17:01
【问题描述】:

我有两个不同的数据库位于两台不同的服务器上。

一个是 SQL Server,另一个是 Netezza。

我想检查 SQL Server 上的条目是否与我的 Netezza 上的条目相同。我希望逐条记录。

我希望输出告诉我哪些条目存在于 SQL Server 中,但不存在于 Netezza。

我正在尝试使用 Informatica PowerCenter 创建映射,但我被难住了。

【问题讨论】:

  • 每张表有多少行数据?
  • 您的问题中似乎有两个单独的问题... ask1) 在 SQL Server 上查找 Netezza 上不存在的记录... ask2) 在 SQL Server 上查找具有相同 ID 的记录在 Netezza 上,但其余字段并不相同...请您告知哪个问题符合您的要求
  • 如果 Netezza 中没有相同的东西,我希望返回 NULL。
  • 每个表可能有大约 100,000-500,000 行

标签: sql-server netezza informatica-powercenter


【解决方案1】:

使用连接器转换来连接这些表。选择 Netezza 表作为 Master,SQL server 表作为 Detail,连接类型选择 Detail Outer Join。

现在在连接器的输出中,您将从 SQL Server 获取所有行,并且仅从 Netezza 表中获取匹配的行。如果记录在 Netezza 中不存在,则 Netezza 字段将为 NULL。之后,您可以在表达式转换中仅检查一个 Netezza 关键字段,以确定记录是否存在于 Netezza 中。

【讨论】:

  • 好答案。如果数据量很大,您可能需要增加 joiner 中的内存,甚至对数据进行排序(在 sorter trans 或数据库中 - 这取决于)并配置 joiner 以利用 sorted 属性。
  • 如果唯一的原因是在连接器转换上使用“排序输入”属性,则不要添加排序器。您需要在这里非常小心,因为 Joiner 预计在这种情况下,两个管道都已排序。并且为两者添加一个 Sorter 会创建更多的缓存,而不是让 Joiner 来缓存 Master 管道。这可能仅在例如以下情况下才有用。细节源可以读取排序(利用现有的数据库索引),您只需要对主管道进行排序。
  • 如何为不同的服务器建立连接?还要记住,有很多表,这不能只针对一个案例。
猜你喜欢
  • 1970-01-01
  • 2019-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多