使用外键将 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)。我已经插入了大部分表格数据,但这是一个问题。我有表Address
和Merchant
。第一个表没有外键,但第二个表包含一个,名为IdAddress
,因此它们可能是关系的。是否可以将数据插入Merchant
,因此对于表Address
中的每条记录将与Merchant
中的IdAddress
链接。
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:您需要在缓冲表中插入 XML 数据 - 例如 #temporary 表。然后,首先获取外键可以引用的唯一值。插入不存在的那个。之后,通过值将#temporary 表与引用的表连接,并插入值ID 而不是值。
【讨论】:
在这种情况下我应该在表之间使用哪种类型的连接? @danmorcovINNER JOIN
最后一个INSERT
。要插入第一个表中不存在的值,可以使用EXISTS
、EXCEPT
或LEFT JOIN
。
据我所知,步骤是:1)声明xml。 2)创建临时表商家。 3)设置xml。 4)选择我想将数据插入临时表商家(IDNX,Name,WorkProgram,IdAddress)的行。5)加入临时表和表地址,其中已经插入了我想要链接的IdAddress。还是我错了?
是的,当您转到Merchant
表时,您将看到address
,而不是地址的id
。因此,获取所有地址并将新地址插入address
表中。一旦他们有IDs
使用address
名称加入Merchand
表和adress
表,然后您将获得ID。以上是关于使用外键将 XML 数据插入 SQL 表的主要内容,如果未能解决你的问题,请参考以下文章