XML数据导入SQL 2008 [英] XML data import into SQL 2008

查看:83
本文介绍了XML数据导入SQL 2008的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我需要将一个复杂的XML文件导入到多个SQL表中.我尝试使用数据映射,但一次只能导入1个节点.我需要做的是能够从父节点中选择外键.

有人可以帮忙吗?

这是我的xml的简化版本:

Hi,

I need to import a complex XML file into multiple SQL tables. I have tried using data maps but can only manage to import 1 node at a time. what I need to do is to be able to select foreign keys from parent nodes.

Can someone please help?

Here is a reduced version of my xml:

<BookingList>
	<Booking>
	<BookingRef>HAY-171644</BookingRef>
	<BookingDate>10-15-12</BookingDate>	
		<ContactDetail>
		<Address1>My street name</Address1>		
		</ContactDetail>
		<Passengers>
		<PassengerDetail>
			<PassengerItem>1</PassengerItem>
			<Title>Miss</Title>
			<FirstName>Kerry</FirstName>
		</PassengerDetail>
		</Passengers>
		<BookingElements>
		<BookingElement>
			<BookingItem>1</BookingItem>
			<ElementRef>HAY-171644/1</ElementRef>
			<ElementType>Package</ElementType>
			<AccommodationDetail>
				<Accommodation>
					<AccommodationItem>1</AccommodationItem>
					<CheckIn>10-21-12</CheckIn>
					<CheckOut>10-28-12</CheckOut>
					<Rooms>
						<RoomItem>1</RoomItem>
						<RoomType> Double room</RoomType>
					</Rooms>
				</Accommodation>
			</AccommodationDetail>
		</BookingElement>
		</BookingElements>
	</Booking>
	<Booking>
	<BookingRef>HAY-171643</BookingRef>
	<BookingDate>10-15-12</BookingDate>
		<ContactDetail>
		<Address1>30 Street name</Address1>
		</ContactDetail>
		<Passengers>
		<PassengerDetail>
			<PassengerItem>1</PassengerItem>
			<Title>Mr</Title>
			<FirstName>ALWYN</FirstName>
		</PassengerDetail>
		</Passengers>
		<BookingElements>
		<BookingElement>
			<BookingItem>1</BookingItem>
			<ElementRef>HAY-171643/1</ElementRef>
			<ElementType>Package</ElementType>
			<AccommodationDetail>
				<Accommodation>
					<AccommodationItem>1</AccommodationItem>
					<CheckIn>06-19-13</CheckIn>
					<CheckOut>06-26-13</CheckOut>
						<Rooms>
							<RoomItem>1</RoomItem>
							<RoomType>Studio for 4</RoomType>
						</Rooms>
				</Accommodation>
			</AccommodationDetail>
		</BookingElement>
		</BookingElements>
	</Booking>
</BookingList>

推荐答案

我不知道确切的答案,但我希望它能帮助您找到解决方案:
I don''t know the exact answer, but i hope it will help you to find a solution:
DECLARE @iDoc INT
DECLARE @xml as XML 

SET @xml = N'<bookinglist>...</bookinglist>'

--Booking
EXEC sp_xml_preparedocument @iDoc OUTPUT, @xml
SELECT *
FROM OPENXML(@iDoc,'/BookingList/Booking',2)
WITH ([BookingRef] NVARCHAR(50)  'BookingRef',
	[BookingDate] NVARCHAR(20)  'BookingDate')
EXEC sp_xml_removedocument @iDoc

--ContactDetail
EXEC sp_xml_preparedocument @iDoc OUTPUT, @xml
SELECT *
FROM OPENXML(@iDoc,'/BookingList/Booking/ContactDetail',2)
WITH ([Address] NVARCHAR(50)  'Address1')
EXEC sp_xml_removedocument @iDoc

--Passengers
EXEC sp_xml_preparedocument @iDoc OUTPUT, @xml
SELECT *
FROM OPENXML(@iDoc,'/BookingList/Booking/Passengers/PassengerDetail',2)
WITH ([PassengerItem] INT  'PassengerItem',
	[Title] NVARCHAR(20)  'Title',
	[FirstName] NVARCHAR(20)  'FirstName')
EXEC sp_xml_removedocument @iDoc


这篇关于XML数据导入SQL 2008的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆