为Sybase表和索引生成DDL

时间:2009-01-27 20:52:55

标签: database sybase ddl operations

我正在寻找一个命令行工具来为我负责的数据库中的某些Sybase表生成表和索引的DDL(不需要复杂)。我可以访问用于查看单个DDL的GUI工具,我可以剪切并粘贴它们,但是我希望能够通过数据库中的所有表格并生成一些可以检入CVS的漂亮文本文件。< / p>

我尝试使用Sybase提供的名为ddlgen的工具,但它只是抛出了这样的异常:

bash-3.00# ./ddlgen -SdatabaseServer:4100 -Uusername -PsecretPassword -TDB -NdatabaseName 
U64: null: databaseName.dbo.firstTable
U64: null: databaseName.dbo.firstTable
        at com.sybase.ddlgen.container.UserTableContainer.getDependentDDL(UserTableContainer.java:1065)
        at com.sybase.ddlgen.container.UserTableContainer.open(UserTableContainer.java:1364)
        at com.sybase.ddlgen.container.UserTableMetaContainer.open(UserTableMetaContainer.java:94)
        at com.sybase.ddlgen.container.DDLBaseContainer.load(DDLBaseContainer.java:76)
        at com.sybase.ddlgen.container.DatabaseContainer.addChildren(DatabaseContainer.java:552)
        at com.sybase.ddlgen.container.DatabaseContainer.open(DatabaseContainer.java:104)
        at com.sybase.ddlgen.container.DatabaseMetaContainer.open(DatabaseMetaContainer.java:114)
        at com.sybase.ddlgen.DDLThread.run(DDLThread.java:89)

这不是很有帮助。我一直认为必须有一个很好的Perlish方法来做到这一点,但我不知道会是什么。

5 个答案:

答案 0 :(得分:1)

使用以下命令获取deffination

defncopy -P tester1 -S sqppdb2 -U pmestr -D ppdb2 -o tab4 ppdb2..tab4

由于

答案 1 :(得分:1)

您还可以使用基于Perl的dbschema.pl

http://www.isug.com/Sybase_FAQ/ASE/section9.html#9.3.2

答案 2 :(得分:0)

下载Embarcadero DBArtisan的评估版并使用其提取功能来获取DDL。

您可以在DBArtisan中打开Logging(Logfile - &gt; Log SQL),然后查看它发送给Sybase以获取表DDL的SQL。将日志文件中的SQL复制并粘贴到您从命令行运行的脚本,该脚本可能有效。

如果您不使用Windows,请提前道歉... DBArtisan仅限Windows。

答案 3 :(得分:0)

另一种方法是MyGeneration代码生成器(如CodeSmith但开源),它使用模板创建代码。这段代码可以是你喜欢的任何东西--Sql,C#等我使用Sql Server并且我已经使用了一些免费提供的模板来创建你指定的DDL,并自动创建NHibernate Mapping文件 - 非常棒。

答案 4 :(得分:0)

ddlgen将为您提供您所需要的并且效果非常好。您似乎遇到了Java的环境问题。再试一次,然后发布完整的错误。