حسین احمدی
بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب

آموزش باز کردن فایل XML در SQL Server با OpenRowSet

یکی از قابلیت های SQL Server کار کردن با مستندات XML هست، یعنی شما می توانید خروجی کوئری ها را تبدیل به مستندات XML کرده یا یک فایل XML را خوانده و محتویات آن را پردازش کنید. در این نکته قصد داریم تا با نحوه باز کردن یک فایل XML و پردازش آن آشنا شویم. فرض کنید که فایل XML شما با نام data.xml و در درایو D ذخیره شده و شامل محتویات زیر است:

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
<Customers>
	<Customer Id="1">
		<FirstName>Hossein</FirstName>
		<LastName>Ahmadi</LastName>
		<Address Zipcode="1111111111">
			<Country>Iran</Country>
			<State>Alborz</State>
			<City>Karaj</City>
		</Address>
	</Customer>
	<Customer Id="2">
		<FirstName>Mohammad</FirstName>
		<LastName>Nasiri</LastName>
		<Address Zipcode="2222222222">
			<Country>Iran</Country>
			<State>Alborz</State>
			<City>Mohammad Shahr</City>
		</Address>
	</Customer>
</Customers>

جهت باز کردن این فایل شما باید ابتدا یک متغیر از نوع xml تعریف کرده و بعد بوسیله عبارت OPENROWSET فایل مورد نظر را باز کنید و محتویات آن را در متغیر تعریف شده ذخیره کنید:

declare @xmlDoc xml;
select @xmlDoc = p from OPENROWSET(BULK'd:\data.xml',SINGLE_BLOB) as T(P);
select @xmlDoc;

با اجرای اسکریپت بالا محتویات فایل XML بوسیله دستور select در خروجی نمایش داده می شود. در ادامه می توان متغیر xmlDoc را در عبارت OPENXML برای پردازش محتویات آن استفاده کرد:

declare @xmlDoc xml;
select @xmlDoc = p from OPENROWSET(BULK'd:\data.xml',SINGLE_BLOB) as T(P);

declare @handler int;
exec sp_xml_preparedocument @handler out,@xmlDoc;

select
	*
from
	openxml(@handler,'Customers/Customer/Address')
	with
	(
		[FirstName] nvarchar(200) '../FirstName',
		[ZipCode] nvarchar(10) '@Zipcode',
		[Country] nvarchar(200) 'Country'
	)

البته از openrowset برای باز کردن فایل های دیگر هم می توان استفاده کرد که استفاده آن مشابه اسکریپتی است که در ابتدای نکته گفته شد. توسینسو باشید


حسین احمدی
حسین احمدی

بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب

حسین احمدی ، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس ، بیش از 12 سال سابقه فعالیت حرفه ای در سطح کلان ، مشاور ، مدیر پروژه و مدرس نهادهای مالی و اعتباری ، تخصص در پلتفرم دات نت و زبان سی شارپ ، طراحی و توسعه وب ، امنیت نرم افزار ، تحلیل سیستم های اطلاعاتی و داده کاوی ...

نظرات