我正在寻找一个命令行工具来为我负责的数据库中的某些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方法来做到这一点,但我不知道会是什么。
答案 0 :(得分:1)
使用以下命令获取deffination
defncopy -P tester1 -S sqppdb2 -U pmestr -D ppdb2 -o tab4 ppdb2..tab4
由于
答案 1 :(得分:1)
您还可以使用基于Perl的dbschema.pl
答案 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的环境问题。再试一次,然后发布完整的错误。