Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm cách nào để xuất XML bằng truy vấn SQL Server?

Nếu bạn chỉ cần lưu trữ XML và không làm bất cứ điều gì khác với nó, đây có lẽ là cách dễ nhất để thực hiện điều này - sử dụng ADO.NET đơn giản:

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);
}

Thao tác này sẽ tạo một tệp D:\test.xml (hoặc thay đổi điều đó để phù hợp với hệ thống của bạn) và sẽ đặt các thẻ XML đó vào tệp đó.

SqlCommand đối tượng cũng có .ExecuteXmlReader() phương thức sẽ trả về một XmlReader đối tượng để quét và thao tác XML - không chỉ trả về một chuỗi. Sử dụng bất cứ điều gì có ý nghĩa nhất đối với bạn!

Tái bút:cũng là đầu ra của FOR XML AUTO là một chút .... giả sử ... dưới mức tối ưu. Nó sử dụng dbo.Employee vì đó là thẻ XML chính, v.v. ... với SQL Server 2008, tôi thực sự khuyên bạn nên xem xét sử dụng FOR XML PATH thay vào đó - nó cho phép bạn tinh chỉnh và tùy chỉnh bố cục của đầu ra XML.

So sánh kết quả đầu ra XML ban đầu của bạn với 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" />

chống lại truy vấn này - chỉ để thấy sự khác biệt:

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

Đầu ra là:

<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. Làm cách nào để tạo người dùng trong cơ sở dữ liệu SQL Server Express mà tôi đã thêm vào dự án của mình?

  2. Zero SQL bế tắc theo thiết kế - bất kỳ mẫu mã nào?

  3. Kết hợp cột varchar với cột int

  4. Lỗi sql tên cột không hợp lệ

  5. Hiệu suất SQL trên THAM GIA TRÁI OUTER so với KHÔNG TỒN TẠI