XML to DDL的项目关键:与数据库同步

来源:互联网 时间:2008-05-29 14:19:00 

对于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成为恰当的数据库元语言耗费时间更短,这些使得这些工具变得非常好用。

这其中的价值绝对值得思量,并且为那些幸运的成为使用一个他们支持的目标数据库做出一个真正奇妙的数据集成以及管理工具。

标签:
0
投稿

猜你喜欢

  • 使用Oracle的Decode函数进行多值判断

    2024-01-28 09:12:54
  • Scrapy爬虫文件批量运行的实现

    2022-04-25 18:29:57
  • Go处理json数据方法详解(Marshal,UnMarshal)

    2024-02-06 11:47:24
  • python实现机器人卡牌

    2023-05-29 17:27:38
  • python实现微信自动回复机器人功能

    2023-12-30 01:01:40
  • 使用Perl语言去存取mSQL和MySQL数据库的内容

    2009-10-23 09:11:00
  • 利用 Monkey 命令操作屏幕快速滑动

    2021-03-06 11:37:50
  • 解决“引入同一个JS文件在非IE6中正常,但IE6报错”的问题

    2009-04-03 11:42:00
  • Python+OpenCV六种实时图像处理详细讲解

    2022-06-14 10:47:27
  • python 实现体质指数BMI计算

    2023-01-25 12:44:56
  • X/HTML5 v.s. XHTML2(I)

    2008-06-17 18:00:00
  • python 获取list 长度

    2021-11-12 12:49:57
  • 使用ASP订制自己的XML文件读写方法

    2008-10-24 09:35:00
  • Python socket聊天脚本代码实例

    2023-02-02 21:33:16
  • nodejs的错误处理过程记录

    2024-05-02 17:37:19
  • SQL Server误区30日谈 第28天 有关大容量事务日志恢复模式的误区

    2024-01-19 23:08:55
  • 在python中读取和写入CSV文件详情

    2021-01-21 22:34:51
  • vue2.0开发实践总结之疑难篇

    2024-05-02 16:33:28
  • Python算法练习之二分查找算法的实现

    2023-08-27 14:29:29
  • C#向数据库中插入或更新null空值与延迟加载lazy

    2024-01-24 09:28:20
  • asp之家 网络编程 m.aspxhome.com