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

एसक्यूएल सर्वर 2005 में एक्सएमएल डेटा को पुनरावृत्त करना

मान लें कि आपका नमूना एक्सएमएल कुछ इस तरह दिखता है:

<MissingDS>
  <MissingTable>
    <MissingColumn>abc</MissingColumn>
    <TableName>tblMyTable</TableName>
    <PhysicalColName>table_abc</PhysicalColName>
    <Grantor_Grantee>nobody</Grantor_Grantee>
  </MissingTable>
  <MissingTable>
    <MissingColumn>xyu</MissingColumn>
    <TableName>tblMyTable2</TableName>
    <PhysicalColName>table_xyz</PhysicalColName>
    <Grantor_Grantee>nobody2</Grantor_Grantee>
  </MissingTable>
</MissingDS>

फिर आप इसे नए SQL Server 2005 XQuery समर्थन के साथ इस तरह पार्स कर सकते हैं:

DECLARE @MissingXML XML
SET @MissingXML = CAST(@MissingRecordsXML AS XML)

SELECT
    Missing.Rec.value('(MissingColumn)[1]', 'varchar(1000)') AS 'MissingColumn',
    Missing.Rec.value('(TableName)[1]', 'varchar(100)') AS 'TableName',
    Missing.Rec.value('(PhysicalColName)[1]', 'varchar(100)') AS 'Physical',
    Missing.Rec.value('(Grantor_Grantee)[1]', 'varchar(100)') AS 'Grantor_Grantee'
FROM
    @MissingXML.nodes('/MissingDS/MissingTable') AS Missing(Rec)

बेशक, यदि आप इसे चुन सकते हैं, तो आप उसी डेटा पंक्तियों को तालिका में आसानी से सम्मिलित भी कर सकते हैं:

INSERT INTO 
  dbo.MissingDSTable(MissingColumn, TableName, PhysicalColName, Grantor_Grantee)
    SELECT
       Missing.Rec.value('(MissingColumn)[1]', 'varchar(1000)') AS 'MissingColumn',
       Missing.Rec.value('(TableName)[1]', 'varchar(100)') AS 'TableName',
       Missing.Rec.value('(PhysicalColName)[1]', 'varchar(100)') AS 'Physical',
       Missing.Rec.value('(Grantor_Grantee)[1]', 'varchar(100)') AS 'Grantor_Grantee'
    FROM
       @MissingXML.nodes('/MissingDS/MissingTable') AS Missing(Rec)

आशा है कि इससे थोड़ी मदद मिलेगी

मार्क



  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 डेटाबेस के साथ Visual Studio 2010 ऐप का त्वरित परिनियोजन

  2. पैरामीटर मान को एक स्ट्रिंग से एक Int32 . में कनवर्ट करने में विफल

  3. केवल साधारण SQL INSERT के साथ मैन्युअल वेतन वृद्धि को लागू करना संभव है?

  4. अग्रणी शून्य के साथ एक स्ट्रिंग को पैड करें ताकि यह SQL Server 2008 में 3 वर्ण लंबा हो

  5. SQL सर्वर में तालिका डुप्लिकेट कैसे करें (पीके और एफके शामिल करें)