2012-02-16 54 views
5

是否有任何开源工具将xml模式转换为Linux的数据库模式。我需要的只是读取xml模式,生成相应的数据库模式并使用它创建表。我试图谷歌和所有我能找到的是xsd2db和它用c#写的,但对我没用。我使用的是centos,我的数据库是postgresql。任何帮助表示赞赏。提前致谢。是否有任何开源工具将xml模式转换为linux的数据库模式?

+0

请您澄清一下为什么对您没用的工具;是因为用C#编写的,还是因为你的用例(缺少)功能?你是否使用XSD作为你的XML模式? – 2012-02-16 15:45:42

+1

1.请记住,在一般情况下,您所要求的是[ORM](http://en.wikipedia.org/wiki/Object-relational_mapping)系统,甚至可能不止这些。 2.我为此尝试了一些工具,xsd2db就是其中之一,我完全不满意输出。面向对象的模型不能很好地映射到关系模型,所以任何试图自动执行的工具都会完全错误,或者结果太复杂以至于无法理解,更不用说为其构建处理代码。 – thkala 2012-02-16 19:40:21

回答

3

本地支持出现on the way,但我找不到任何本机。也没有找到任何一种体面的工具来完成这项工作。

所以,我虽然这将是一个整洁的周末项目,了解更多关于XSD的信息。我创建了xsd2pgsql来处理这个问题。它的边缘仍然非常粗糙,所以我希望你能尝试一下,让我知道你有什么问题。或者如果你想帮忙的话就分叉吧。

XML不是表示数据库的最大格式,因为它是3d数据库,而数据库几乎是2D格式。所以,这个脚本做了一些假设,就像root的所有子元素都是主表,并且之后的任何complexType都是一个表。也就是说,这应该适用于大多数XML Schema(或者至少我测试过的少数几个)。

您可以通过-h选项获得所有选项。但基本上,您可以提供XSD文件作为参数,您可以使用这些选项稍微改变行为或让它直接在数据库上运行SQL。如果它是一个生产系统,我建议不要直接连接到数据库,并确保SQL输出是否合适,并进行任何调整。

下面是一个例子使用与存储库中的样本文件:python xsd2pgsql.py -f sample-2.xsd sample.xsd

注意:目前,这不处理任何关系/表/ XML复杂类型之间的引用。事实之后,你必须添加你想要的那些和任何索引。自定义名称空间还不支持。

希望这会有所帮助。

相关问题