Ms Sql Server de XML okuma

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
lazymule
Üye
Mesajlar: 127
Kayıt: 16 Eki 2006 04:03
İletişim:

Ms Sql Server de XML okuma

Mesaj gönderen lazymule »

Merhaba
Aşğıdaki gibi XML bir tablom var ben sql kullanarak bu veriyi nasıl okuyabilirim ?

XML SQL Server Reporting Services çıktısı (xml dosya olarak)

Teşekkürler.

Kod: Tümünü seç

<?xml version="1.0" encoding="utf-8"?>
<Report >
  <table1>
    <Detail_Collection>
      <Detail ilceadi="ALTIEYLÜL" koy_mahadi="AKARSU" isletmeno="123465" sahibi="Cin Ali" isletmeturu_adi="SAHIS" kooperatif_adi="" uyeliktarihi="30.11.2020" tckimlik="328930722222" dogumtarihi="1964-09-20T00:00:00" baba_adi="Cali" banka_sube_kodu="0045" banka_hesap_no="4544545-6001" telefon="0 2654656" cep="0 44545454 "/>
      <Detail ilceadi="ALTIEYLÜL" koy_mahadi="AKARSU" isletmeno="123465" sahibi="Cin Ali" isletmeturu_adi="SAHIS" kooperatif_adi="" uyeliktarihi="30.11.2020" tckimlik="328930722222" dogumtarihi="1964-09-20T00:00:00" baba_adi="Cali" banka_sube_kodu="0045" banka_hesap_no="4544545-6001" telefon="0 2654656" cep="0 44545454 "/>
    </Detail_Collection>
  </table1>
</Report>
Evrende Ulaşılamayacak Tepe Yoktur !!!!
Yeterki İnsan Ulaşmak İstesin !!!!
http://www.maxiteknik.com
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Ms Sql Server de XML okuma

Mesaj gönderen sabanakman »

Eğer geçersiz karakterler barındırmayan doğru yapıda bir xml dosyanız varsa aşağıdaki sorgu işinize yarayacaktır.

Kod: Tümünü seç

  DECLARE @XML AS XML, @hDoc AS INT, @SQL NVARCHAR (MAX)
  SELECT @XML = CONVERT(XML, BulkColumn) FROM OPENROWSET(BULK 'C:\Yol\test.xml', SINGLE_BLOB) AS x;
  EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML
  
  SELECT * FROM OPENXML(@hDoc, 'Report/table1/Detail_Collection/Detail')
  WITH 
  (ilceadi varchar(100) '@ilceadi',
  koy_mahadi varchar(100) '@koy_mahadi',
  isletmeno varchar(100) '@isletmeno',
  sahibi varchar(100) '@sahibi',
  isletmeturu_adi varchar(100) '@isletmeturu_adi',
  kooperatif_adi varchar(100) '@kooperatif_adi',
  uyeliktarihi varchar(100) '@uyeliktarihi',
  tckimlik varchar(100) '@tckimlik',
  dogumtarihi varchar(100) '@dogumtarihi',
  baba_adi varchar(100) '@baba_adi',
  banka_sube_kodu varchar(100) '@banka_sube_kodu',
  banka_hesap_no varchar(100) '@banka_hesap_no',
  telefon varchar(100) '@telefon',
  cep varchar(100) '@cep'
  )
  
  EXEC sp_xml_removedocument @hDoc
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
lazymule
Üye
Mesajlar: 127
Kayıt: 16 Eki 2006 04:03
İletişim:

Re: Ms Sql Server de XML okuma

Mesaj gönderen lazymule »

@sabanakman hocam çok teşekkürler tam istediğim bende farklı bir çözüm bulmuştum dosyadan okuma kısmına gelmeden sen yazmışsın.

Kod: Tümünü seç

DECLARE @foo XML;
SET @foo = N'<?xml version="1.0"?>
<Report >
  <table1>
    <Detail_Collection>
      <Detail ilceadi="ALTIEYLÜL" koy_mahadi="AKARSU" isletmeno="123465" sahibi="Cin Ali" isletmeturu_adi="SAHIS" kooperatif_adi="" uyeliktarihi="30.11.2020" tckimlik="328930722222" dogumtarihi="1964-09-20T00:00:00" baba_adi="Cali" banka_sube_kodu="0045" banka_hesap_no="4544545-6001" telefon="0 2654656" cep="0 44545454 "/>
      <Detail ilceadi="ALTIEYLÜL" koy_mahadi="AKARSU" isletmeno="123465" sahibi="Cin Ali" isletmeturu_adi="SAHIS" kooperatif_adi="" uyeliktarihi="30.11.2020" tckimlik="328930722222" dogumtarihi="1964-09-20T00:00:00" baba_adi="Cali" banka_sube_kodu="0045" banka_hesap_no="4544545-6001" telefon="0 2654656" cep="0 44545454 "/>
    </Detail_Collection>
  </table1>
</Report>';

SELECT
	x.item.value('@ilceadi', 'nvarchar(100)') AS ilceadi,
	x.item.value('@koy_mahadi', 'nvarchar(100)') AS koy_mahadi,
	x.item.value('@isletmeno', 'nvarchar(100)') AS isletmeno,
	x.item.value('@sahibi', 'nvarchar(100)') AS sahibi
FROM @foo.nodes('/Report/table1/Detail_Collection/Detail') x (item)
Evrende Ulaşılamayacak Tepe Yoktur !!!!
Yeterki İnsan Ulaşmak İstesin !!!!
http://www.maxiteknik.com
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Re: Ms Sql Server de XML okuma

Mesaj gönderen varyemez »

Peki @sabanakman hocam
SELECT @XML = CONVERT(XML, BulkColumn) FROM OPENROWSET(BULK 'C:\Yol\test.xml', SINGLE_BLOB) AS x;
buradaki dosya adını
declare @dosyaadı nvarchar(100) şeklinde tanımlayıp input olarak sp de içeri almak
SELECT @XML = CONVERT(XML, BulkColumn) FROM OPENROWSET(BULK @dosyaadi , SINGLE_BLOB) AS x; kullanmak istedim çalışmıyor. Nasıl bir yol önerirsiniz.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Ms Sql Server de XML okuma

Mesaj gönderen sabanakman »

Kod: Tümünü seç

declare @xml_dosyaadi NVARCHAR(MAX)
set @xml_dosyaadi = 'C:\Yol\test.xml'
DECLARE @SQL_Komutu NVARCHAR(MAX)
DECLARE @Parametre NVARCHAR(500)
DECLARE @xml XML
SET @Parametre = N'@XML_OUT XML OUTPUT'
SET @SQL_Komutu = N'SELECT @XML_OUT = BulkColumn FROM OPENROWSET(BULK ' + quotename(@xml_dosyaadi, '''') + ', SINGLE_BLOB) ROW_SET';
EXEC sp_executesql @SQL_Komutu, @Parametre, @XML_OUT = @xml OUTPUT;

Declare @hDoc AS INT
EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML

SELECT * FROM OPENXML(@hDoc, 'Report/table1/Detail_Collection/Detail')
WITH 
(ilceadi varchar(100) '@ilceadi',
  koy_mahadi varchar(100) '@koy_mahadi',
  isletmeno varchar(100) '@isletmeno',
  sahibi varchar(100) '@sahibi',
  isletmeturu_adi varchar(100) '@isletmeturu_adi',
  kooperatif_adi varchar(100) '@kooperatif_adi',
  uyeliktarihi varchar(100) '@uyeliktarihi',
  tckimlik varchar(100) '@tckimlik',
  dogumtarihi varchar(100) '@dogumtarihi',
  baba_adi varchar(100) '@baba_adi',
  banka_sube_kodu varchar(100) '@banka_sube_kodu',
  banka_hesap_no varchar(100) '@banka_hesap_no',
  telefon varchar(100) '@telefon',
  cep varchar(100) '@cep')

EXEC sp_xml_removedocument @hDoc
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Re: Ms Sql Server de XML okuma

Mesaj gönderen varyemez »

Çok teşekkür ederim. mükemmel işimi gördü..
Cevapla