2012-02-16 31 views
5

Có công cụ mã nguồn mở nào chuyển đổi lược đồ xml thành lược đồ cơ sở dữ liệu cho Linux không. Tất cả những gì tôi cần là đọc lược đồ xml, tạo lược đồ cơ sở dữ liệu tương ứng và tạo các bảng với lược đồ đó. Tôi đã cố gắng để google và tất cả tôi có thể tìm thấy là xsd2db và được viết bằng C#, nhưng không sử dụng cho tôi. Tôi đang sử dụng centos và cơ sở dữ liệu của tôi là postgresql. Bất kỳ trợ giúp được đánh giá cao. Cảm ơn trước.Có công cụ mã nguồn mở nào để chuyển đổi lược đồ xml thành lược đồ cơ sở dữ liệu cho Linux không?

+0

Bạn có thể vui lòng giải thích tại sao công cụ không sử dụng cho bạn hay không; có phải vì nó được viết bằng C# hay là do chức năng (thiếu) của nó cho trường hợp sử dụng của bạn? Bạn đang sử dụng XSD làm lược đồ XML của mình? –

+1

1. Hãy nhớ rằng trong trường hợp chung, điều bạn đang yêu cầu là hệ thống [ORM] (http://en.wikipedia.org/wiki/Object-relational_mapping), và có lẽ thậm chí nhiều hơn thế. 2. Tôi đã thử một vài công cụ cho điều này, xsd2db là một trong số họ, và tôi đã hoàn toàn không hài lòng bởi đầu ra. Mô hình hướng đối tượng không ánh xạ tốt đến mô hình quan hệ, vì vậy bất kỳ công cụ nào cố gắng làm điều đó tự động hoặc làm điều đó hoàn toàn sai, hoặc kết quả quá phức tạp đến nỗi không thể hiểu được, hãy để một mình xây dựng mã xử lý. – thkala

Trả lời

3

Hỗ trợ gốc xuất hiện on the way, nhưng tôi không thể tìm thấy bất kỳ nội dung gốc nào. Cũng không tìm thấy bất kỳ loại công cụ phong nha để làm công việc.

Vì vậy, tôi cho rằng đây sẽ là một dự án cuối tuần gọn gàng để tìm hiểu thêm một chút về XSD. Tôi đã tạo xsd2pgsql để xử lý việc này. Nó vẫn còn khá thô ráp xung quanh các cạnh, vì vậy tôi muốn bạn thử nó ra và cho tôi biết về bất kỳ vấn đề bạn có. Hoặc nĩa nó nếu bạn muốn giúp đỡ.

XML không phải là định dạng lớn nhất để đại diện cho cơ sở dữ liệu vì nó là 3d và DB là khá nhiều 2d. Vì vậy, một số giả định được thực hiện bởi kịch bản này, giống như tất cả các phần tử con của root là bảng chính và bất kỳ complexType nào sau đó sẽ là một bảng. Điều đó nói rằng, điều này sẽ làm việc trên hầu hết các lược đồ XML (hoặc ít nhất là vài cái tôi đã thử nghiệm).

Bạn có thể nhận tất cả các tùy chọn với tùy chọn -h. Nhưng về cơ bản, bạn có thể cung cấp nó với (các) tệp XSD làm đối số và bạn có thể sử dụng các tùy chọn để thay đổi hành vi một chút hoặc để nó chạy SQL trực tiếp trên DB của bạn. Nếu đó là một hệ thống sản xuất, tôi khuyên bạn không nên kết nối trực tiếp với DB và đảm bảo đầu ra SQL là tốt để đi hay không, và để thực hiện bất kỳ điều chỉnh nào.

Dưới đây là một ví dụ sử dụng với các tập tin mẫu trong kho: python xsd2pgsql.py -f sample-2.xsd sample.xsd

LƯU Ý: Hiện nay điều này không xử lý bất kỳ mối quan hệ/tham chiếu giữa các loại phức tạp bảng/XML. Bạn sẽ phải thêm chúng và bất kỳ chỉ mục nào bạn muốn sau khi thực tế. Các không gian tên tùy chỉnh cũng chưa được hỗ trợ.

Hy vọng điều này sẽ hữu ích.

Các vấn đề liên quan