Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara mengekspor XML menggunakan kueri SQL Server?

Jika Anda hanya perlu menyimpan XML dan tidak melakukan hal lain, ini mungkin cara termudah untuk melakukannya - menggunakan ADO.NET sederhana:

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

Ini akan membuat file D:\test.xml (atau ubah agar sesuai dengan sistem Anda) dan akan memasukkan tag XML tersebut ke dalam file tersebut.

SqlCommand objek juga memiliki .ExecuteXmlReader() metode yang akan mengembalikan XmlReader objek untuk memindai dan memanipulasi XML - bukan hanya mengembalikan string. Gunakan apa pun yang paling masuk akal bagi Anda!

PS:juga, output dari FOR XML AUTO adalah sedikit .... katakanlah ... suboptimal. Ini menggunakan dbo.Employee karena ini adalah tag XML utama dan seterusnya... dengan SQL Server 2008, saya sangat menyarankan Anda untuk menggunakan FOR XML PATH sebagai gantinya - ini memungkinkan Anda untuk mengubah dan menyesuaikan tata letak keluaran XML.

Bandingkan keluaran XML asli Anda dengan 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" />

terhadap kueri ini - hanya untuk melihat perbedaannya:

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

Keluarannya adalah:

<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. cara mendeteksi batas waktu server sql dari aplikasi .NET tanpa menggunakan catch Exception

  2. Pesan berdasarkan id Tertentu terlebih dahulu kemudian Dengan istirahat

  3. Bagaimana Anda membuka file SDF (SQL Server Compact Edition)?

  4. Apa pengaturan SQL Server terbaik untuk lingkungan pengembangan?

  5. Otentikasi SQL Server vs. Otentikasi Windows:Yang mana yang digunakan dan kapan