SQL Server’da XML Uzantılı Url Adresinden Veri Çekme İşlemi
Herkese merhaba,
Bu yazıda SQL Server’da XML uzantılı url adresinden 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; --XML'den veri çekilmesi SELECT XMLKolonu.value('(/note/to)[1]', 'varchar(50)') AS Kime, XMLKolonu.value('(/note/from)[1]', 'varchar(50)') AS Kimden, XMLKolonu.value('(/note/heading)[1]', 'varchar(50)') AS Başlık, XMLKolonu.value('(/note/body)[1]', 'varchar(50)') AS İçerik FROM #XMLTablosu;
Kodları çalıştırdığınızda aşağıdaki gibi bir sonuç göreceksiniz.
Görüldüğü üzere XML uzantılı url adresinden veri çekme işlemi yapılmış oldu.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.