SQL Server’da XML Uzantılı Url Adresinden Cross Apply Kullanarak Veri Çekme İşlemi

Herkese merhaba,

Bu yazıda SQL Server’da XML uzantılı url adresinden Cross Apply kullanarak veri çekme işlemiyle ilgili bilgi vereceğim.

Konu hakkında açık şekilde yazılmış Türkçe bir yazı ya da makale bulamadım. Ayrıca ingilizce kaynaklarda da sıkıntılar mevcuttu. Bu yüzden böyle bir makale yazmaya karar verdim. Konu alanındaki ilk Türkçe makaledir. Konunun çıkış noktası tamamen merak.

Elinizde XML içeren bir web url adresi olduğunu düşünelim. Böyle bir internet adresi üzerinden verileri nasıl çekebiliriz?

Aşağıdaki kodlamayı inceleyerek siz de kendi xml url linkiniz üzerinden sorgu işlemlerinizi gerçekleştirebilirsiniz.

İlk olarak aşağıdaki ayarları yapmalısınız.

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO

Yukarıdaki ayarları SQL Serverınız üzerinde yaptıktan sonra aşağıdaki kodları çalıştırabilirsiniz.

--Temp tablo oluşturulması ve bu temp tabloya xml adresi olan url'den veri aktarma işlemi

IF OBJECT_ID('tempdb..#XMLTablosu') IS NOT NULL
    DROP TABLE #XMLTablosu;

CREATE TABLE #XMLTablosu
(
    XMLKolonu XML
);
GO

DECLARE @URL VARCHAR(8000);
SELECT @URL = 'https://www.w3schools.com/xml/note.xml'; --xml url adresi

DECLARE @Response VARCHAR(8000);
DECLARE @XML XML;
DECLARE @Obj INT;
DECLARE @Result INT;
DECLARE @HTTPStatus INT;
DECLARE @ErrorMsg VARCHAR(MAX);

EXEC @Result = sp_OACreate 'MSXML2.XMLHttp', @Obj OUT;

EXEC @Result = sp_OAMethod @Obj, 'open', NULL, 'GET', @URL, false;
EXEC @Result = sp_OAMethod @Obj,
                           'setRequestHeader',
                           NULL,
                           'Content-Type',
                           'application/x-www-form-urlencoded';
EXEC @Result = sp_OAMethod @Obj, send, NULL, '';
EXEC @Result = sp_OAGetProperty @Obj, 'status', @HTTPStatus OUT;

INSERT #XMLTablosu
(
    XMLKolonu
)
EXEC @Result = sp_OAGetProperty @Obj, 'responseXML.xml'; --, @Response OUT 

--Tablonun kontrol edilmesi

SELECT *
FROM #XMLTablosu x;

--Cross Apply ile Tablonun Ayrıştırılması

SELECT
      pref.value('(to/text())[1]', 'varchar(50)') AS Kime,
      pref.value('(from/text())[1]', 'varchar(50)') AS Kimden,
	  pref.value('(heading/text())[1]', 'varchar(50)') AS Kimden,
	  pref.value('(body/text())[1]', 'varchar(50)') AS Kimden
FROM  
      #XMLTablosu CROSS APPLY
      XMLKolonu.nodes('/note') AS Mektup(pref)

Kodları çalıştırdığınızda aşağıdaki gibi bir sonuç göreceksiniz.

SQL Server’da XML Uzantılı Url Adresinden Cross Apply Kullanarak Veri Çekme İşlemi

Görüldüğü üzere XML uzantılı url adresinden veri çekme işlemi Cross Apply kullanarak yapılmış oldu.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

382 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!