生成数据库& Oracle pl-sql上的表模式(ddl)

时间:2009-10-27 02:58:12

标签: sql sql-server-2005 oracle oracle10g data-migration

任何人都有一个PL-SQL语句,我可以使用它来生成数据库& Oracle 10g上特定数据库的表模式?我需要.sql文件中的模式,如果可能的话,与ANSI-92/99 sql实现兼容,所以我可以直接在sql server 2005上使用生成的.sql。

已经听说过exp / imp,但它似乎生成了dump文件,我只需要一个简单的ddl on .sql文件。

由于

4 个答案:

答案 0 :(得分:3)

你可以尝试:

select dbms_metadata.get_ddl('TABLE',table_name,owner)
from dba_tables where owner='schema name';

它会返回long,因此您可能想要使用长缓冲区。

有关此dbms_metadata的更多信息:http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_metada.htm

答案 1 :(得分:2)

如果你只需要转储你的架构,这个免费的包做得非常好。我们在日常生产中使用它。

  

http://sourceforge.net/projects/cx-oracletools

如果您需要从Oracle转换为SQL Server,该软件可能会做得更好。我们用它在Oracle,MySql和Postgreqsql之间进行转换。

  

http://www.spectralcore.com/fullconvert

答案 2 :(得分:1)

我写了oraddlscript,它为用户拥有的每个数据库对象调用dbms_metadata.get_ddl(Pop的答案),并将DDL写入文件。

更新:Answered comment

答案 3 :(得分:1)

问候,我建议使用Oracle SQL Developer Data Modeler,因为它来自Oracle,它可以直接从数据字典中读取DDL信息。它创建一个ERD,然后您可以为SQL Server 2000/2005,某些版本的DB2和Oracle 9i / 10g / 11g生成DDL。