İlginizi Çekebilir
  1. Ana Sayfa
  2. SQL

T-SQL ile XML Data Import Etmek

T-SQL ile XML Data Import Etmek
T-SQL ile XML Data Import Etmek
+ - 0

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.

T-SQL ile XML Data Import Etmek

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….

Bu yazıya tepkiniz ne oldu?

Yazar Hakkında

Lise Ağ Sistemleri ve Yönetimi bölümü, üniversite Bilgisayar Programcılığı bölümü Ön Lisans, Yönetim Bilişim Sistemleri Lisans öğrenimi aldım. Askerlik görevimi tamamladım. Uzmanlık alanım; C# ve SQL Programlama dilleri ile müşteri odaklı, kullanıcı dostu ERP ve CRM gibi sistemleri geliştirmektir. Ayrıca şuanda PHP ve MYSQL alanında projeler geliştirmekteyim. C++, Phyton, Xamarin, MVC gibi konuları öğrenmek ve kendimi geliştirme çabası içerisindeyim. Discord için: https://discord.gg/FBxZeHu9

Değerli yorumlarınızı bekliyorum. :)