sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan eksporterer man XML ved hjælp af en SQL Server-forespørgsel?

Hvis du kun skal gemme XML'en og ikke gøre andet ved den, er dette sandsynligvis den nemmeste måde at opnå dette på - ved at bruge et simpelt 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; integreret sikkerhed=SSPI;")) ved hjælp af (SqlCommand _cmd =new SqlCommand(query, _con)){ _con.Open(); strengresultat =_cmd.ExecuteScalar().ToString(); _con.Close(); File.WriteAllText(@"D:\test.xml", resultat);} 

Dette vil oprette en fil D:\test.xml (eller ændre det for at matche dit system) og vil sætte disse XML-tags i den fil.

SqlCommand objektet har også en .ExecuteXmlReader() metode, som ville returnere en XmlReader objekt til at scanne og manipulere XML - ikke bare returnere en streng. Brug det, der giver mest mening for dig!

PS:også output fra FOR XML AUTO er lidt .... lad os sige ... suboptimal. Den bruger dbo.Employee da det er det primære XML-tag og så videre... med SQL Server 2008, vil jeg kraftigt anbefale dig at se nærmere på at bruge FOR XML PATH i stedet - det giver dig mulighed for at justere og tilpasse layoutet af XML-outputtet.

Sammenlign dit originale XML-output med FOR XML AUTO

 

mod denne forespørgsel - bare for at se forskellen:

VÆLG [Medarbejder-ID] SOM '@ID', [Efternavn], [Fornavn], [Titel], [Fødselsdato], [Ansættelsesdato]FRA [dbo].[Medarbejdere]FOR XML PATH('Medarbejder' ), ROOT('Medarbejdere')

Output er:

  Davolio Nancy Sælger 1948-12-08T00 :00:00 1992-05-01T00:00:00   Fuldstændig Andrew FirstName> Vice President, Sales 1952-02-19T00:00:00 1992-08-14T00:00:00  


  1. rekursiv funktion til dynamisk multilevel menu php

  2. Langsom tælleforespørgsel med where-klausul

  3. Hvad er den bedste måde at gemme brugerbilleder ved hjælp af PHP og MySQL?

  4. Vil dette blive gemt på siden?