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

SQL सर्वर क्वेरी का उपयोग करके XML को कैसे निर्यात करें?

अगर आपको केवल एक्सएमएल को स्टोर करने की जरूरत है और इसके लिए कुछ और नहीं करना है, तो इसे पूरा करने का शायद यह सबसे आसान तरीका है - सीधे सरल ADO.NET का उपयोग करना:

string query = "SELECT EmployeeID, LastName, FirstName, Title, BirthDate, HireDate FROM dbo.Employees FOR XML AUTO";

using(SqlConnection _con = new SqlConnection("server=(local);database=Northwind;integrated security=SSPI;"))
using (SqlCommand _cmd = new SqlCommand(query, _con))
{
    _con.Open();
    string result = _cmd.ExecuteScalar().ToString();
    _con.Close();

    File.WriteAllText(@"D:\test.xml", result);
}

यह एक फ़ाइल बनाएगा D:\test.xml (या इसे अपने सिस्टम से मिलान करने के लिए बदलें) और उन XML टैग्स को उस फ़ाइल में डाल देंगे।

SqlCommand ऑब्जेक्ट में एक .ExecuteXmlReader() भी है विधि जो एक XmlReader लौटाएगी एक्सएमएल स्कैन और हेरफेर करने के लिए ऑब्जेक्ट - न केवल एक स्ट्रिंग वापस करें। जो कुछ भी आपको सबसे ज्यादा समझ में आता है उसका प्रयोग करें!

पुनश्च:भी, FOR XML AUTO . का आउटपुट थोड़ा है .... मान लें ... सबऑप्टिमल। यह dbo.Employee . का उपयोग करता है चूंकि यह मुख्य XML टैग है और आगे भी... SQL Server 2008 के साथ, मैं दृढ़ता से अनुशंसा करता हूं कि आप FOR XML PATH का उपयोग करें। इसके बजाय - यह आपको XML आउटपुट के लेआउट को बदलने और अनुकूलित करने की अनुमति देता है।

अपने मूल XML आउटपुट की तुलना FOR XML AUTO . से करें

<dbo.Employees _x0040_ID="1" LastName="Davolio" FirstName="Nancy" Title="Sales Representative" BirthDate="1948-12-08T00:00:00" HireDate="1992-05-01T00:00:00" />
<dbo.Employees _x0040_ID="2" LastName="Fuller" FirstName="Andrew" Title="Vice President, Sales" BirthDate="1952-02-19T00:00:00" HireDate="1992-08-14T00:00:00" />

इस प्रश्न के विरुद्ध - केवल अंतर देखने के लिए:

SELECT 
    [EmployeeID] AS '@ID',
    [LastName], [FirstName],
    [Title],
    [BirthDate], [HireDate]
FROM 
    [dbo].[Employees]
FOR XML PATH('Employee'), ROOT('Employees')

आउटपुट है:

<Employees>
  <Employee ID="1">
    <LastName>Davolio</LastName>
    <FirstName>Nancy</FirstName>
    <Title>Sales Representative</Title>
    <BirthDate>1948-12-08T00:00:00</BirthDate>
    <HireDate>1992-05-01T00:00:00</HireDate>
  </Employee>
  <Employee ID="2">
    <LastName>Fuller</LastName>
    <FirstName>Andrew</FirstName>
    <Title>Vice President, Sales</Title>
    <BirthDate>1952-02-19T00:00:00</BirthDate>
    <HireDate>1992-08-14T00:00:00</HireDate>
  </Employee>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. प्रोएक्टिव SQL सर्वर स्वास्थ्य जांच, भाग 5:सांख्यिकी प्रतीक्षा करें

  2. INSERTED में नहीं मान डालने के लिए OUTPUT क्लॉज का उपयोग करना

  3. टेबल-वैल्यूड-फ़ंक्शन के अंदर सीटीई के लिए मैक्सरेकर्सन विकल्प कैसे सेट करें?

  4. एसक्यूएल क्वेरी महीने के प्रति दिन रिपोर्ट के लिए गिनती आइटम प्राप्त करती है?

  5. कैसे पता करें कि पेज लॉक किस टेबल से संबंधित है