AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-1926

Tony's questions

Martin Hope
Tony
Asked: 2015-10-22 06:04:40 +0800 CST

执行 UNION 而不是合并的 SSIS Merge 组件

  • 1

我有一个包来组合来自多个数据库的数据。我试图将两个数据集放在一起,以便将它们写入一个表。

有一个 commonSSIS_ID (DT_I4)用于匹配行和我想引入同一数据集的其他列也是DT_I4.

这是流程中出现问题的部分;正如您所看到的,来自两个路径的数据SSIS_ID在进入合并之前已排序:

SSIS数据流

这是 Merge 组件的配置。目的是将相同的CRO_CompanyID和放在一行中:Sponsor_CompanyIDSSIS_ID

合并配置

然而,合并的输出就像一个UNION; 有 1,532 行从左侧进入,4,303 行从右侧进入,在输出端产生 5,835 行。

输出上的数据查看器显示了问题:

在此处输入图像描述

我可以通过以不同的方式处理数据来解决这个问题,但我真的很烦我不能让它工作。

关于我做错了什么或没有做些什么以便能够以这种方式组合数据有什么建议吗?

我正在为 SQL Server 2008 使用 SSIS,但没有那个版本的标签。

sql-server sql-server-2008
  • 1 个回答
  • 436 Views
Martin Hope
Tony
Asked: 2011-06-14 07:02:11 +0800 CST

是否有工具可以在两个不同的模式之间进行数据比较?

  • 11

我们正在将数据库迁移到新模式,但想要验证数据是否已正确移动。

如果模式相同,传统的数据比较工具可以比较两个数据库的差异。在我们的例子中,表设计发生了变化,但旧模式中的所有数据都在新模式中,只是稍微移动了一下,我需要确保它是正确的。我们有数千万行,因此人工检查不是一种选择。

是否有任何工具可以帮助进行此类比较?

如果没有,是否有任何库/框架可以帮助启动自定义解决方案的开发?

如有必要,我很乐意使用特定于数据库的解决方案,在这种情况下用于 SQL Server 2008。

我的解决方案:我通过VIEW在旧数据库上创建一个与新数据库表具有相同字段的每个表来比较两个数据集。

然后,我使用此处描述的技术比较数据:在 SQL Server 中比较两个表的最短、最快和最简单的方法:UNION !

我在这次迁移中很幸运,因为整个表结构类似于旧数据库,字段从一个表移动到另一个表,删除或添加。在删除和添加的情况下,没有什么可比较的,对于已移动或聚合的字段,我在视图中进行计算以提供正确的比较信息。

比较UNION只显示有差异的行,所以只要数据正确,我就会得到一个空的结果集。

sql-server sql-server-2008
  • 4 个回答
  • 8767 Views
Martin Hope
Tony
Asked: 2011-06-08 01:28:39 +0800 CST

在 SSIS 中复制数据流的某些行

  • 7

我有一个数据流,可以将数据从旧数据库迁移到新数据库。旧设计将所有数据和历史信息(更改)存储在单个表中,并针对行使用“版本”(递增整数)。

新设计有两个表,一个用于数据的“当前”状态,另一个用于记录使用触发器的更改的审计(或历史)表。因此,“当前”数据仅存在一行,并且历史记录行很多。

在我的 SSIS 包中,我使用以下组件将当前数据复制到一个表,然后将所有数据发送到审计表。

SSIS 数据流

Multicast 用于拆分数据流,Conditional Split 标识“当前”行并将其发送到 Order 表(在任何人评论使用保留字作为表名之前,该表实际上并不称为Order )。

我创建了这个流,因为我看不到使用条件拆分将所有数据发送到审计目标并且仅将当前行发送到另一个的方法。

我假设创建所有重复数据然后将其丢弃到垃圾目的地不是很有效,因为我有大约 52m 行要迁移,我担心转换需要几天时间。

有没有更好(更有效)的方法来实现数据拆分?

关于数据的注意事项:我已将 a 应用于row_number()允许我将“当前”行标识为数字 1 的数据,包括“当前”在内的所有行都需要转到审计表目标。

编辑: 我找到了 SSIS Junkie 的这篇博客文章建议的多播和条件拆分的替代方法:同步脚本转换的多个输出

它使用脚本组件将数据发送到一个或多个输出。我正在尝试这种方法,看看它是否更快,但是在看到 Kenneth 关于删除垃圾目的地的回答和建议之后,我不确定它是否会更快。

sql-server-2008 etl
  • 1 个回答
  • 6857 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve