DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1733|回复: 0
打印 上一主题 下一主题

[待整理] XML to DDL项目关键:与数据库同步

[复制链接]
跳转到指定楼层
楼主
发表于 2015-4-26 22:32:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
对于xml2ddl项目,Freshmeat.org提供了一整套基于GNU或者GPL通用公共许可证下的Python程序。在一个运行的Python环境下,这套工具能够在许多操作系统上工作,包括Windows, Linux, 以及UNIX平台上,同时也能工作在以下数据库引擎:PostgreSQL, MySQL, Oracle, 以及Firebird.   基本上,xml2ddl运行用户把一个XML表示的数据库转换成一套SQL或者DDL报表。根据他的制造者和管理者Scott Kirkwood的介绍,“XML到DDL尽力做到数据库独立以使得同样的XML能够用于各种不同的数据库。例如对于快速测试各种数据库的表现这是非常有用的”
  开始这个过程之前,xml2ddl运行用户指向一个模式,制定一个目标数据库,并且出示必要的DDL或者SQL语句实例化数据库。这种简单的XML例子定义为一个名为schemal.xml的文件如下:
  
<table name="students" fullname="List of Students"
                  desc="List of students with their full names">
                  <columns>
                      <column name="id" fullname="Primary Key" type="integer" key="1"
                          desc="Primary key for the table"/>
                      <column name="student_name" fullname="Student Name"
                          type="varchar" size="80"
                          desc="The full name of the student"/>
                  </columns>
              </table>
            </schema>

  使用下列命令行语法调用输出PostgresSQL信息:xml2ddl-数据库的schemal.xml,输出结果如下:
  
DROP TABLE students;
            CREATE TABLE students (
                    id integer,
                    student_name varchar(80),
                    CONSTRAINT pk_students PRIMARY KEY (id));
            COMMENT ON TABLE students IS 'List of students with their full names';
            COMMENT ON COLUMN students.id IS 'Primary key for the table';
            COMMENT ON COLUMN students.student_name IS 'The full name of the student';

  通过取代firebird,oracle或者mysql能够生成其它目标数据库的同样类型的输出结果。
  该xml2ddl程序也能够检查二个不同版本的XML图例的区别并且生成需要的DDL或者SQL语句从而把这些相同的变化更新到相关的目标数据库里面去。这就需要两个相关的图例(让我们称之为第二个schema2.xml并且取代schemal.xml),以及使用下面所示的语法:
  如果schema2.xml看起来如下:
  
<schema>
                <table name="students" fullname="List of Students"
                    desc="List of students">
                   <columns>
                        <column name="id" fullname="Primary Key" type="integer" key="1"
                            desc="Primary key for the table"/>
                        <column name="student_name" fullname="Student Name"
                            type="varchar" size="100"
                            desc="The full name of the student"/>
                        <column name="email" fullname="Electronic mail address"
                            type="varchar" size="100"
                            desc="The primary email for the student"/>
                    </columns>
                </table>
            </schema>

  那么PostgresSQL将产生以下的DDL输出:
  
ALTER TABLE students ALTER student_name TYPE varchar(80);
            ALTER TABLE students DROP email;
            COMMENT ON TABLE students IS 'List of students with their full names';

  工程的项目网站上面可以找到一个完整的例子。它们使得使用XML以及相关的结构化编辑工具定义和管理数据库非常容易,并且使得翻译你的结构化XML成为恰当的数据库元语言耗费时间更短,这些使得这些工具变得非常好用。
  这其中的价值绝对值得思量,并且为那些幸运的成为使用一个他们支持的目标数据库做出一个真正奇妙的数据集成以及管理工具。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-16 00:01 , 耗时 0.080334 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表