1

我正在寻找一个命令行工具来为我处理的数据库中的一些 Sybase 表生成表和索引的 DDL(不需要更复杂的东西)。我可以访问用于查看单个 DDL 的 GUI 工具,并且可以剪切和粘贴它们,但是我想要一些能够遍历数据库中所有表并生成一些可以签入 CVS 的漂亮文本文件的东西。

我尝试使用 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 方式来做到这一点,但我不知道那会是什么。

4

5 回答 5

1

使用以下命令获取定义

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

谢谢

于 2009-03-11T17:46:56.837 回答
1

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

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

于 2009-05-28T21:43:55.227 回答
0

ddlgen 会给你你需要的东西,而且效果很好。您似乎遇到了 Java 的环境问题。再试一次并完整地发布您遇到的错误。

于 2009-02-15T20:00:30.163 回答
0

另一种方法是MyGeneration一个代码生成器(类似于 CodeSmith,但开源),它使用模板来创建代码。该代码可以是您喜欢的任何代码 - Sql、C# 等。我使用 Sql Server,并且我使用了一些免费提供的模板来创建您指定的 DDL,并自动创建 NHibernate 映射文件 - 太棒了。

于 2009-01-28T10:27:13.457 回答
0

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

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

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

于 2009-01-27T21:25:44.160 回答