提取Sybase数据库的DDL语句

时间:2015-12-29 12:39:32

标签: java jdbc sybase sybase-ase

我们正在使用Sybase数据库。我们在Windows 7计算机上使用Sybase ASE 15.5版本,我们创建了一个使用jdbc:Sybasecom.sybase.jdbc4.jdbc.SybDataSource连接的示例Java程序。我们能够在sybase数据库上连接并运行查询。

我们的要求是generate DDL statementscreate table scriptsindexesstored proceduretriggerssynonymsfunctions等。我们想在所有数据库对象上生成SQL script

我们尝试使用sysobjectssyscolumns根据建议提取here,但只生成来自SELECT * FROM sysobjects WHERE type = 'U'的表名用户表和系统表。

使用schemaspy工具研究reverse engineer sybase,该工具可视化表/视图之间的关系。但是没有用,我们需要有ddl命令的脚本。

在探索更多发现ddlgen提取各种DDL语句(表,索引等)时,如何使用ddlgen在我的java程序中提取这些语句?

或者是否有任何其他解决方案可以帮助我们提取sybase数据库的ddl,就像oracle我们使用metaModel.getDDL()的情况一样?

1 个答案:

答案 0 :(得分:1)

我相信你可以从syscomments和sysobjects中检索一些ddl。

来自文件:

  

syscomments包含每个视图,规则,默认值,触发器的条目,   表约束,分区,过程,计算列,   基于函数的索引键和其他形式的编译对象。该   text列包含原始定义语句。如果是文字   列长度​​超过255个字节,条目跨越行。每个对象   可以占用多达65,025行

SELECT so.name, sc.text
  FROM syscomments sc, sysobjects so
 WHERE sc.id = so.id
  AND sc.texttype = 1   --1 for user defined objects/0 for system objects
 ORDER BY so.name

显然这并不完全,但它应该让你非常接近。或者,您需要使用java程序来调用命令行ddlgen实用程序。

我目前没有安装ASE,所以如果代码不对,我会道歉。