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 .