XML Sonucunu Tabloya Çevirme

XML Sonucunu Tabloya Çevirme

Selamlar bu yazımızda elimizde olan bir XML verisini kullanarak bu verileri bir SQL tablosuna nasıl çevireceğimizi göreceğiz.

XML veri saklamak ve veri transfer etmek için kullanılmaktadır. Bazen elde ettiğimiz XML dosyaları çok büyük boyutta olup pek çok veriyi içerebilmektedir. Bu XML sonucu üzerinde belirli işlemler yapmak ya da çok daha okunabilir bir halde bu verileri görmek isteyebiliriz. Bu durum da bu XML sonucunu bir tabloya çevirmek işimizi oldukça kolaylaştırıp sorunumuzu çözecektir.

Aşağıda çok basit anlamda bir XML verisi gösterilmiştir. Bu XML dosyası rastgele oluşturulmuş müşterilerin bilgisini tutmaktadır.

Müşterilerin Tutulduğu XML

Yukarıdaki XML dosyası basit anlamda müşterilerin bazı bilgilerini tutmaktadır o yüzden okuması da aslında zor değildir ama elimizdeki XML dosyasının müşteri ile ilgili pek çok bilgileri içerdiğini ve dosyada binlerce müşterinin olabileceğini düşündüğümüz de bu dosyayı bir tabloya çevirmek oldukça mantıklı olacaktır. Dosyada görüldüğü üzere Customers en kapsayıcı tag’dir. Bu tag içinde her bir müşteriyi temsil eden Customer tag’i bulunmaktadır. Bu tag tablomuzdaki her bir satırı temsil edecektir. Bu tag içinde de müşterinin bilgilerinin bulunduğu tagler yer almaktadır, bu tagler ise tabloda bulunan bir satırdaki kolonlara karşılık gelecektir. Şimdi bu XML dosyalarındaki verilere karşılık gelecek tablomuzu oluşturalım.

Müşteri Tablosu

Tabloda XML deki verilere karşılık gelecek kolonlar oluşturulmuş, primary key olarak ise id alanı eklenmiştir.

İlk olarak XML verilerini Result adında XML tipinde bir değişkene atıyorum.

XML’i Değişkene Atama

Şimdi de bu XML verilerini okuyacak kodu yazalım.

XML Kayıtlarını Okuma

Burada yapılan işi anlatmak gerekirse insert into diyip oluşturduğum tabloya select sonucu çekeceğim verileri atmasını söylüyorum. From kısmında ise verileri alacağım kaynağı belirtiyorum. Burada XML verilerimi Result adında bir değişkenden alacağımız için Result.nodes diyip parantez içinde (‘Customers/Customer’) diyorum. Burada nodes XML içindeki parçalara denilmektedir. Parantez içindeki ifade ise select sonucu alacağım verileri git Customers tag inin altında bulunan her bir Customer tag inin içinden al demek oluyor. Baktığımız zaman bizim alacağımız veriler olan first_name, last_name, age, birth_place ve educational_status değerleri Customers altındaki Customer tag inin içinde bulunmaktadır. Kısacası Result.nodes(‘Customers/Customer’) diyerek her bir Customer tag ine erişiyoruz bu tag de biraz önce bahsettiğimiz gibi bizim tablomuzdaki her bir satırımıza denk geliyor. Bu ifadeye as ile bir alias veriyoruz.

Verileri okurken ise bu verdiğimiz alias ı kullanıp n.c.value diyerek tag içerisindeki değerleri alıyoruz yani ilk müşterinin first_name alanı için n.c.value diyerek Can Cuma değerine erişmiş olduk. Burada value ifadesinden sonra parantez açıp ilk olarak alacağımız verinin XML dosyasındaki tag olarak ismini ve türünü belirtiyoruz daha sonra ise veri tipini yazıyoruz.

Evet işlemimiz bu kadar. Şimdi bu kodu çalıştırıp tablomuzun içeriğine göz atalım.

Tablo İçeriği

Artık bu tablo ile çok kolay bir şekilde filtreleme yapıp istediğimiz verileri aşağıdaki gibi elde edebiliriz.

Filtreleme

Bu yazımızda bir XML sonucundan yararlanarak bu veriyi bir SQL tablosuna dönüştürüp kullanmayı gördük bir sonraki yazılarda görüşmek üzere.

İyi çalışmalar.

Yorum bırakın