Tôi đã gặp phải sự cố mà tôi cần nhập một XML (> 1Gb) khổng lồ vào SQL Server 2008 hàng ngày. Những gì tôi có bây giờ là một tệp XML mẫu và lược đồ XML của nó. Các lược đồ XML là khá phức tạp, trong đó có nhiều tùy chỉnh được định nghĩa kiểu đơn giản, và phần tử với kiểu phức tạp như:Nhập dữ liệu XML khổng lồ (> 1Gb) vào SQL Server 2008 hàng ngày
<xs:element name="xxxx_url">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:anyURI">
<xs:attribute ref="target" use="optional"/>
<xs:attribute ref="abc" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
Sau khi nhập khẩu, một dịch vụ WCF sẽ được thực hiện để lấy các dữ liệu lưu trữ trong SQL Sever, một cái gì đó như tìm kiếm , truy xuất v.v. (hoạt động chỉ đọc).
Các bước thực hiện tôi có thể nghĩ là như:
- Xác định một mô hình đối tượng theo XSD cung cấp (bằng tay), mô hình đối tượng sẽ được sử dụng cho dịch vụ WCF để trở về giá trị.
- Xác định lược đồ cơ sở dữ liệu từ XSD được cung cấp (thủ công), giản đồ được ước tính có khoảng 20 - 30 bảng.
- Tạo gói SSIS để tải XML vào cơ sở dữ liệu hàng ngày.
- Tạo dịch vụ WCF đọc từ cơ sở dữ liệu, điền dữ liệu vào mô hình đối tượng được xác định trong bước 1 và trả về đối tượng cho ứng dụng khách.
Vấn đề là các bước này liên quan đến rất nhiều công việc thủ công. Tôi phải nghiên cứu hàng XSD theo hàng và chuyển đổi nó thành mô hình đối tượng và lược đồ cơ sở dữ liệu mannualy.
Tôi đã thực hiện một số nghiên cứu rằng có một số công cụ tự động hóa để chuyển đổi XSD thành các lớp và cũng chuyển đổi XSD thành lược đồ cơ sở dữ liệu. Nhưng các lớp được chuyển đổi từ XSD bằng công cụ này là khá sai, và việc chuyển đổi thành lược đồ không thành công vì nó không phù hợp với định dạng tập dữ liệu MS.
Tôi tự hỏi có giải pháp nào tốt cho vấn đề này không, để tiết kiệm rất nhiều công việc thủ công?
Bất kỳ đề xuất nào được đánh giá cao!
Nếu hiệu suất/sử dụng bộ nhớ là quan trọng, hãy xem vtd-xml. –