使用外键将 XML 数据插入 SQL 表

Posted

技术标签:

【中文标题】使用外键将 XML 数据插入 SQL 表【英文标题】:Insert XML Data Into SQL Table with Foreign Keys 【发布时间】:2020-10-12 05:47:38 【问题描述】:

我有这个 XML 文件(有数据,但我出于某种目的删除了它):

<NIACList>
<NIAC>
        <Number></Number>
        <SubmissionDate></SubmissionDate>
        <ExpirationDate  />
        <IssuerIDNO></IssuerIDNO>
        <IssuerName></IssuerName>
        <SuspensionPeriod/>
        <Cessation>
          <Basis  />
          <Date  />
        </Cessation>
        <Merchant>
          <IDNx></IDNx>
          <Name></Name>
          <Address>
            <Region></Region>
            <Locality></Locality>
            <Street></Street>
            <House></House>
            <Block  />
            <Flat  />
            <Phone  />
            <Fax  />
            <Email  />
          </Address>
        </Merchant>
        <CommercialUnit>
          <IDNx  />
          <Name  />
          <Type></Type>
          <Area></Area>
          <Location></Location>
          <Address>
            <Region></Region>
            <Locality></Locality>
            <Street></Street>
            <House></House>
            <Block  />
            <Flat  />
          </Address>
          <Activities>
            <Activity>
              <Code></Code>
              <Name></Name>
            </Activity>
          </Activities>
          <Goods>
            <Good>
              <Name></Name>
            </Good>
          </Goods>
          <WorkProgram  />
          <PublicSupplyUnit>
            <Capacity  />
            <TerraceCapacity  />
          </PublicSupplyUnit>
          <TradingAlcohol  />
          <TradingBeer  />
          <TradingTobaccoProducts  />
          <AmbulatoryTrading  />
          <MobileUnitTrading></MobileUnitTrading>
          <MobileUnit>
            <Type  />
            <Length  />
            <Width  />
            <Height  />
          </MobileUnit>
          <CommercialApparatusTrading></CommercialApparatusTrading>
          <CommercialApparatus>
            <Count  />
            <Length  />
            <Width  />
            <Height  />
          </CommercialApparatus>
        </CommercialUnit>
        <Modifications  />
      </NIAC>
</NIACList>

我的任务是将此文件中的所有 XML 数据插入 SQL 表 (SQL Server)。我已经插入了大部分表格数据,但这是一个问题。我有表AddressMerchant。第一个表没有外键,但第二个表包含一个,名为IdAddress,因此它们可能是关系的。是否可以将数据插入Merchant,因此对于表Address 中的每条记录将与Merchant 中的IdAddress 链接。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

您需要在缓冲表中插入 XML 数据 - 例如 #temporary 表。然后,首先获取外键可以引用的唯一值。插入不存在的那个。之后,通过值将#temporary 表与引用的表连接,并插入值ID 而不是值。

【讨论】:

在这种情况下我应该在表之间使用哪种类型的连接? @danmorcov INNER JOIN 最后一个INSERT。要插入第一个表中不存在的值,可以使用EXISTSEXCEPTLEFT JOIN 据我所知,步骤是:1)声明xml。 2)创建临时表商家。 3)设置xml。 4)选择我想将数据插入临时表商家(IDNX,Name,WorkProgram,IdAddress)的行。5)加入临时表和表地址,其中已经插入了我想要链接的IdAddress。还是我错了? 是的,当您转到Merchant 表时,您将看到address,而不是地址的id。因此,获取所有地址并将新地址插入address 表中。一旦他们有IDs 使用address 名称加入Merchand 表和adress 表,然后您将获得ID。

以上是关于使用外键将 XML 数据插入 SQL 表的主要内容,如果未能解决你的问题,请参考以下文章

sql 添加外键语句

sql查询指定表外键约束

11.21

oracle 如何创建表外键

判断子表外键约束参数类型

不同数据库中的两个表外键关系