如何基于SSIS中的一个元素联接两个XML文件?

时间:2019-05-29 20:52:45

标签: xml ssis etl ssis-2017

我有两个XML文件,一个文件包含2个元素,另一个文件包含4个元素。这两个文件之间是其中之一。我想提取两个XML文件的内容,使用公共元素进行联接(例如两个SQL Server表之间的内部联接),然后将两个文件中列的输出转储到一个输出文件中。以下是file1.xml的内容。

<?xml version="1.0" standalone="yes"?>
<DataPairs>
<DataPair>
<LicenseNumber>12345</LicenseNumber>
<DataValue>12331234</DataValue>
</DataPair>
<DataPair>
<LicenseNumber>43432</LicenseNumber>
<DataValue>435432134</DataValue>
</DataPair>
</DataPairs>

下面是file2.xml的内容

<LastRecords>
<DataRecord><AgentNum>013512</AgentNum><EmpId>124532523</EmpId><LicenseKey>12345</LicenseKey></DataRecord>
<DataRecord><AgentNum>013512</AgentNum><EmpId>124532523</EmpId><LicenseKey>12345</LicenseKey></DataRecord>
</LastRecords>

我想在上述文件之间进行联接(例如INNER JOIN)。只要file1中的LicenseNumber与file2.xml中的LicenseKey相匹配,我都希望将以下值输出到SQL Server表中。

LicenseKey
AgentId
EmplId
DataValue

我已尝试通过创建SSIS包在Visual Studio 2017中使用联接,联接合并,查找等,但是我看不到任何可以帮助我合并两个xml文件以获得所需结果的组件。

我正在寻找一个SSIS组件来基于一个公共元素合并两个XML文件,但是我似乎找不到一个。我做了谷歌搜索,也看了几段youtube视频,但无济于事。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

不幸的是,在Integration Services中找不到官方的XML目标组件。有一些第三方组件,或者您可以使用一种变通办法来写入XML文件。

要合并两个Xml文件,您必须执行以下步骤:

  1. 添加2个XML Source组件(每个文件一个)
  2. 在每个XML源之后添加一个排序组件,然后选择LicenseNumber和LicenseKey作为“排序”列
  3. 添加合并联接组件以合并两个流
  4. 要将数据存储在XML文件中,您可以点击以下链接之一:

    或者您可以使用第三方组件: