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

gửi xml tới sql

Xem loạt bài ba phần về SQL XML trong 15 giây: http://www.15seconds. com / Issue / 050803.htm .

Cá nhân tôi sẽ sử dụng các hàm SQL XQuery để chia nhỏ XML của bạn thành từng bit và từng phần và lưu trữ chúng trong SQL Server.

Nếu bạn có một cái gì đó như:

<data>
  <person>
     <name>Jones</name>         
     <firstname>Peter</firstname>
  </person>
  <person>
     <name>Smith</name>         
     <firstname>Frank</firstname>
  </person>
<data>

bạn có thể viết một cái gì đó như:

SELECT
   Data.Person.value('(name)[1]', 'varchar(20)') as 'Name',
   Data.Person.value('(firstname)[1]', 'varchar(20)') as 'First Name'
FROM 
   @XmlVar.nodes('/data/person') As Data(Person)

Về cơ bản, .nodes hàm chia nhỏ XML của bạn thành một "bảng giả" Data.Person - mỗi <person> mục nhập trở thành một hàng trong bảng.

Với .value() , bạn có thể trích xuất các giá trị đơn lẻ từ các nút XML đã cắt nhỏ đó. Bây giờ bạn có một loạt các trường varchar (20), có thể là ví dụ:được chèn vào bảng.

Phương pháp này hoạt động tốt nếu XML của bạn khá nhỏ (vài trăm mục nhập). Nếu bạn có các tệp XML lớn, bạn có thể muốn điều tra các phương pháp khác, chẳng hạn như Tải lên hàng loạt XML .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Công việc Trên Sql Server Agent không hoàn thành, nhưng nó thực hiện trong BIDS?

  2. Quyền của SQL để Thêm dữ liệu và cách xác minh?

  3. Truy cập các cột của bảng theo chỉ mục thay vì tên trong thủ tục được lưu trữ trên SQL Server

  4. Cách xác định giá trị cho các tháng bị thiếu dựa trên dữ liệu của các tháng trước trong T-SQL

  5. SQL Server:bỏ một ràng buộc FK, không phải là khóa ngoại