Merhaba, bu yazımda T-SQL ile XML Data Import Etmek konusundan bahsedeceğim. Bildiğiniz zamanla XML kullanımı artıyor. Özellikle web servisler arasında XML çok popüler bir şekilde kullanılmaktadır. Bu yazımda sizlere bu XML verilerini nasıl tek seferde SQL Server’a import edeceğimizi göstereceğim.
T-SQL ile XML Data Import Etmek
Bu yazıda sizlere XML verilerini Veritabanına import etme işlemini göstereceğim.
Bu tür içe aktarmayı gerçekleştirmenin birçok olası yolu vardır ve bu ipucunda, bunun XML verilerini okumak ve bir SQL Server tablosuna yüklemek için T-SQL ve OPENROWSET kullanılarak nasıl yapılabileceğini göreceğiz. Daha iyi anlamanız için bir örnek üzerinden gidelim.
Adım 1 – İçe Aktarılacak Verileri Depolamak İçin Tablo Oluşturmak
Müşterilerimizin verilerini depolayacak basit bir tablo oluşturalım.
USE DenemeDB GO CREATE TABLE [MUSTERI_TANIMLARI]( [Id] [int] IDENTITY(1,1) NOT NULL, [Belge] [nvarchar](20) NOT NULL, [Isim] [nvarchar](50) NOT NULL, [Adres] [nvarchar](50) NOT NULL, [Meslek] [nvarchar](50) NOT NULL, CONSTRAINT [MUSTERI_PK] PRIMARY KEY ([Id]) ) GO
Adım 2 – Örnek XML Dosyası Oluşturmak
Aşağıda örnek XML verileri bulunmaktadır. Bunu olduğu gibi kullanabilir veya kendi testleriniz için değiştirebilirsiniz. Bu verileri kopyaladım ve TSQL_XML_IMPORT.xml adlı bir dosyada sakladım.
<?xml version="1.0" encoding="utf-8"?> <Musteriler> <Musteri> <Belge>000 000 000</Belge> <Isim>Mary Angel</Isim> <Adres>Şehriniz, YC 1212 </Adres> <Meslek>Sistem Analisti</Meslek> </Musteri> <Musteri> <Belge>000 000 001</Belge> <Isim>John Lenon</Isim> <Adres>Şehriniz, YC 1212</Adres> <Meslek>Sürücü</Meslek> </Musteri> <Musteri> <Belge>000 000 002</Belge> <Isim>Alice Freeman</Isim> <Adres>Şehriniz, YC 1212</Adres> <Meslek>Mimar</Meslek> </Musteri> <Musteri> <Belge>000 000 003</Belge> <Isim>George Sands</Isim> <Adres>Şehriniz, YC 1212</Adres> <Meslek>Doktor</Meslek> </Musteri> <Musteri> <Belge>000 000 004</Belge> <Isim>Mark Oliver</Isim> <Adres>Şehriniz, YC 1212</Adres> <Meslek>Yazar</Meslek> </Musteri> </Musteriler>
Adım 3 – XML Veri Dosyasını Bir SQL Server Tablosuna İçe Aktarma
Şimdi tek ihtiyacımız olan SQL Server‘ın XML dosyasını okumasını sağlamak ve verileri OPENROWSET işlevi aracılığıyla içe aktarmak . Bu işlev T-SQL‘e özgüdür ve XML gibi birçok dosya türünden içe aktarmaya izin veren TOPLU içe aktarma özelliği aracılığıyla birçok farklı dosya türünden veri okumamıza olanak tanır.
İşte XML dosyasını okumak ve verileri bir tabloya BULK INSERT kodu.
INSERT INTO MUSTERI_TANIMLARI (Belge, Isim, Adres, Meslek) SELECT MY_XML.Musteri.query('Belge').value('.', 'NVARCHAR(20)'), MY_XML.Musteri.query('Isim').value('.', 'NVARCHAR(50)'), MY_XML.Musteri.query('Adres').value('.', 'NVARCHAR(50)'), MY_XML.Musteri.query('Meslek').value('.', 'NVARCHAR(50)') FROM (SELECT CAST(MY_XML AS xml) FROM OPENROWSET(BULK 'C:\xml\TSQL_XML_IMPORT.xml', SINGLE_BLOB) AS T(MY_XML)) AS T(MY_XML) CROSS APPLY MY_XML.nodes('Musteriler/Musteri') AS MY_XML (Musteri);
- Yaptığımız ilk şey, MUSTERI_TANIMLARI tablomuza basit bir INSERT.
- SELECT’teki sütunlar, MY_XML adlı oluşturduğumuz takma addan alınır ve Müşteri düğümünün her bir öğesini sorgularız.
- FROM yan tümcesi, verilerin XML dosyasından tek bir sütun ve satıra döndürülmesi için BULK seçeneği ve SINGLE_BLOB seçeneği kullanılarak OPENROWSET işlemi kullanılarak türetilir.
- CROSS APPLY ile birlikte işlev nodes(), tüm Müşteri nesnelerinin uygun şekilde kapsüllenmesini sağlamak için XML öğeleri arasında gezinmeye izin verir.
Adım 4 – İçe Aktarılan XML Verilerini Kontrol Edin
Ekledikten sonra sonuçları kontrol etmek için tabloyu sorgulayabilirsiniz.
Görüldüğü üzere kayıtlar başarı ile eklendi.
T-SQL ile XML Data Import Etmek yazımda bu kadardı. Umarım faydalı olmuştur.
SQL Eğitim Seti eğitimi sayfasına gitmek için tıklayınız. Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz…
Arkadaşlar ayrıca Telegram kanalıma abone olabilir ve yeni yazılardan anında haberdar olabilirisiniz. Discord’a katılmayı unutmayın.
Sağlıcakla ve kodla kalın….