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成为恰当的数据库元语言耗费时间更短,这些使得这些工具变得非常好用。
这其中的价值绝对值得思量,并且为那些幸运的成为使用一个他们支持的目标数据库做出一个真正奇妙的数据集成以及管理工具。


猜你喜欢
- 最近在做一个游戏数据统计后台,最基础的功能是通过分析注册登录日志来展示用户数据。在公司内部测试,用户量很少,所以就没有发现什么性能问题。但是
- 首先创建数据库hncu,建立stud表格。添加数据:create table stud(sno varchar(30) not null p
- 数据库在高并发的场景下使用外键约束会有锁问题并且使用外键会增加运维成本,所以很多公司都规定生产环境的数据库禁止使用外键。那么不使用外键约束的
- 玩过电脑游戏的同学对于 * 肯定不陌生,但是你在用 * 的时候有没有想过如何做一个 * 呢?(当然用 * 不是那么道义哈,呵呵),那我们就来看一下如
- vscode中安装ms-vscode.go插件后可以开启对go语言的支持,ms-vscode.go插件需要依赖一些工具,安装完成后提示goc
- 【实用系列】-- 胖页面载入,加载JavaScript效果整理了一下代码,做了一些优化,算是最终版了。完全不需要对其他文件做任何修改,就是所
- 1、创建存储过程 create or replace procedure test(var_name_1 in type,var_name_
- 代码如下:<% FunctIon DownloadFIle(StrFIle) StrFIlename=StrFIle Response
- 原文链接:https://blog.csdn.net/Fairy_Nan/article/details/105914203HDF也是一种自
- 简单使用最开始,我们用最短的代码体验一下logging的基本功能。import logginglogger = logging.getLog
- Mybatis插入mysql报主键重复的问题首先思路是这样的,先去数据表里面去找有没有这个主键的数据(如果有会有返回值,如果没有则返回nul
- 目录搭建Vuex环境总结搭建Vuex环境在src目录下创建一个文件夹store,在store文件夹内创建一个index.js文件index.
- 目录一、🌕月亮二、🌕雪花月饼一、🌕月亮导入库matplotlib和numpy,作为工具直接用。from mpl_toolkits.mplot
- 因为最近公司有python项目维护,所以把python的基础入门的书整理一遍,因为有些忘记了,同时在看<<python编程>
- 实例化对象名._类名__私有属性名 class Flylove:price = 123 def __init__(self):s
- 交待:使用的软硬件环境为Win XP SP2、SQL Server 2000 SP2个人版、普通双核台式机、1000M局域网,A机为已使用的
- 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server se
- jTopo 帮助说明网站http://www.jtopo.com/index.html使用例子:http://www.jtopo.com/d
- python正则表达式 匹配反斜杠正则 需要把原始字符串不被转义的条件下传递给正则模块,正则再去转义。 r表示r后面的字符串为原始字符串,防
- 1.from_unixtime的语法及用法(1)语法:from_unixtime(timestamp ,date_format)即from_