sql-server - SSIS 平面文件逆透视

标签 sql-server ssis

我有一个相当复杂的平面文件,我正在尝试使用 SSIS 解析它。平面文件的整体结构如下:

顾客姓名,
客户地址,
客户联系信息,
发票日期1,
发票金额1,
发票日期2,
发票金额2,
发票日期3,
发票金额3

我试图将它加载到我的数据库中的两个表中,一个 Customer 表和一个 Invoice 表。 CustomerName、CustomerAddress 和 CustomerContactInfo 都需要插入到客户表中。 InvoiceDate1 和 InvoiceAmount1 需要是 Invoice 表中的一行,并带有指向 Customer 表的外键。 InvoiceDate2 和 InvoiceDate3 相同。

我尝试只使用 unpivot 转换,但它也想对 Customer 进行 unpivot,而我不能这样做。在 SSIS 中是否有处理此问题的好方法?

最佳答案

在您的数据流中,您可以使用多播组件沿多个路径发送数据。在 Source 组件之后添加 Multicast 组件。从一个多播输出将数据发送到客户表。您可以忽略任何后续组件中未使用的列。

在多播的第二个输出中,附加 Unpivot 转换。让它忽略您不想包含在 Invoice 表中的所有列。然后,它将只处理将添加到表中的列。

关于sql-server - SSIS 平面文件逆透视,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3918240/

相关文章:

sql - 在 SQL Server 2012 上按空格拆分文本

sql-server - SQL Server 存储过程转换为 SSIS 包

c# - 如何修复从Yahoo下载报价文件并插入数据库的脚本任务代码?

sql - 使用不同的 WHERE 语句从单个列返回多列数据

sql - 如果日期重叠,则对行进行分组,并对它们进行排名

sql - 使用 DATEADD 和 DATEDIFF 获取一周的开始日(星期一)时出现问题

sql-server - "ORDER BY (SELECT NULL)"是什么意思?

sql - 尝试将数据从 OData 源编辑器加载到 SQL 数据库表时出错

azure - 从本地 SSIS 包读取 Azure Key Vault secret

azure - 删除标题中的双引号