ssis - 从 SSIS 中的多行连接值

标签 ssis

我有一个文件源,其中的数据如下所示:

ID BarcodeNumber
------------------------
1  123456789    
1  33    
2  987654321    
2  44

我想获得如下数据:
ID BarcodeNumber
------------------------
1  12345678933    
2  98765432144

关于如何实现这一点的任何建议?

编辑:我想在数据流中这样做,因为这可能有数十亿行。

最佳答案

理想状态是对于每个 ID,所有条码都将连接在一起。

为此,您的数据必须按 ID 排序。如果文件尚未排序,则您需要通过排序任务运行它。

对数据进行排序后,您将需要在 Asynchronous mode 中添加脚本转换.它将是异步的,因为输入的行数与输出的行数不同。

伪代码将类似于

If Row.ID <> LastID
    If LastID <> ""
        Output0Buffer.ID = LastID
        Output0Buffer.Barcodes = Barcodes
    LastID = Row.ID
    Barcodes = ""

Barcodes = Barcodes + Row.Barcodes

注意事项
  • 上面的代码既不是 C# 也不是 VB.NET 但逻辑应该是健全的
  • 如果您有数十亿行,那么您将需要在这台机器上使用大量 RAM,因为 SSIS 是一个内存中转换系统。
  • Sort 操作和此脚本任务将变得缓慢且占用大量内存,因为它们无法重用内存空间
  • 关于ssis - 从 SSIS 中的多行连接值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17113597/

    相关文章:

    ssis - 在 SSIS 中将文件从文件夹移动到另一个文件夹

    sql-server - 通过一些数据转换创建 Sql 服务器复制(期间或结束时)

    continuous-integration - SSIS 包的 TFS CI 问题

    oracle - 对连接管理器 Oracle Connector 的 AcquireConnection 方法调用失败

    sql-server - 将 GETDATE() 转换为 YYYYMMDDhhmmss 作为派生列

    ssis - 根据执行 SQL 任务的输出发送邮件任务

    sql-server - 如何使用SSIS包将表数据拆分为单独的命名Excel文件?

    SSIS:记录集或临时表

    c# - SSIS 脚本组件不允许文本流输出

    .net - SSIS:Oracle多行到一列输出没有STRAGG