一段时间以来,我一直在使用 XML 将大量数据导入 SQL,但我想知道是否可以从具有子节点的单个 XML 文件跨多个表导入数据?
给定这个例子:
DECLARE @tbl_makes TABLE (ID int IDENTITY(1,1), makeName nvarchar(100))
INSERT INTO @tbl_makes (makeName) VALUES ('Ford')
INSERT INTO @tbl_makes (makeName) VALUES ('Jaguar')
DECLARE @tbl_models TABLE (ID int IDENTITY(1,1), makeID int, modelName nvarchar(100))
INSERT INTO @tbl_models (makeID, modelName) VALUES (1, 'Escort')
INSERT INTO @tbl_models (makeID, modelName) VALUES (1, 'Sierra')
INSERT INTO @tbl_models (makeID, modelName) VALUES (2, 'XK')
INSERT INTO @tbl_models (makeID, modelName) VALUES (2, 'XJS')
SELECT * FROM @tbl_makes m INNER JOIN @tbl_models md ON m.ID = md.makeID
DECLARE @xml XML = '
<cars>
<make name="Ford">
<model name="Mustang" />
<model name="Taurus" />
<model name="F350" />
</make>
<make name="Aston Martin">
<model name="Vanquish" />
<model name="DB7" />
<model name="Lagonda" />
</make>
</cars>'
我很欣赏在插入相关数据之前需要先插入/查找品牌名称。我在网上搜索了这个问题的答案,但示例只使用一个表。我猜如果不使用各种临时表是不可能的,但是这里......