Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एसक्यूएल को एक्सएमएल भेजें

15 सेकेंड पर SQL XML पर तीन-भाग श्रृंखला देखें:http://www.15seconds। कॉम/इश्यू/050803.htm

मैं व्यक्तिगत रूप से SQL XQuery फ़ंक्शंस का उपयोग आपके XML को बिट्स और टुकड़ों में अलग करने और SQL सर्वर में संग्रहीत करने के लिए करूँगा।

अगर आपके पास ऐसा कुछ है:

<data>
  <person>
     <name>Jones</name>         
     <firstname>Peter</firstname>
  </person>
  <person>
     <name>Smith</name>         
     <firstname>Frank</firstname>
  </person>
<data>

आप कुछ इस तरह लिख सकते हैं:

SELECT
   Data.Person.value('(name)[1]', 'varchar(20)') as 'Name',
   Data.Person.value('(firstname)[1]', 'varchar(20)') as 'First Name'
FROM 
   @XmlVar.nodes('/data/person') As Data(Person)

तो मूल रूप से, .nodes फ़ंक्शन आपके XML को "छद्म-तालिका" Data.Person . में काट देता है - प्रत्येक <person> प्रविष्टि तालिका में एक पंक्ति बन जाती है।

.value() . के साथ फ़ंक्शन, आप उन कटे हुए XML नोड्स से एकल मान निकाल सकते हैं। अब आपके पास varchar(20) फ़ील्ड्स का एक गुच्छा है, जो उदा हो सकता है। तालिका में डाला गया।

यदि आपका एक्सएमएल काफी छोटा है (कुछ सौ प्रविष्टियां) तो यह विधि अच्छी तरह से काम करती है। यदि आपके पास बड़ी XML फ़ाइलें हैं, तो आप अन्य विधियों की जांच करना चाहेंगे, जैसे एक्सएमएल बल्कलोड



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. व्यापार खुफिया विकास स्टूडियो के समाधान एक्सप्लोरर में कोई साझा डेटासेट नहीं

  2. पंक्तियों का एक सबसेट चुनना जो कुल मानों के प्रतिशत से अधिक हो

  3. SQL सर्वर में किसी ऑब्जेक्ट की आईडी उसके नाम से प्राप्त करें:OBJECT_ID ()

  4. जांचें कि लिंक किया गया SQL सर्वर चल रहा है या नहीं

  5. SQL सर्वर 2008:TOP 10 और एक साथ अलग