我有一个 Oracle 数据库,其中有很多表和很多属性,例如:主键、唯一键、外键、索引、权限和分区。
我需要在新的 Oracle 数据库中创建具有相同属性的相同表。 有没有办法为我的数据库中的所有表生成单个创建脚本?
谢谢
最佳答案
是的。您可以执行以下查询,“Definition”列中的内容是一个 CLOB,其中包含相应对象的 DDL
SELECT OBJECT_TYPE,
OBJECT_NAME,
DBMS_METADATA.GET_DDL(OBJECT_TYPE, OBJECT_NAME) DEFINITION
FROM DBA_OBJECTS
WHERE OWNER = 'OWNER_NAME'
AND OBJECT_TYPE IN ('FUNCTION',
'PACKAGE',
'PROCEDURE',
'SEQUENCE',
'TABLE',
'TRIGGER',
'VIEW')
ORDER BY OBJECT_TYPE, OBJECT_NAME
下面是一个快速的 VB 脚本,有助于提取 CLOB
folder = "Folder_name"
connStr="<Your connection string here>"
if fetchFromDB=true then
set c=CreateObject("ADODB.Connection")
c.ConnectionString=connStr
c.Open
set r=CreateObject("ADODB.recordset")
sql="SELECT OBJECT_TYPE, OBJECT_NAME, DBMS_METADATA.GET_DDL(OBJECT_TYPE,OBJECT_NAME) DEFINITION FROM DBA_OBJECTS WHERE OWNER='<OWNER_NAME_HERE>' AND OBJECT_TYPE IN ('FUNCTION', 'PACKAGE', 'PROCEDURE', 'SEQUENCE', 'TABLE', 'TRIGGER', 'VIEW') ORDER BY OBJECT_TYPE, OBJECT_NAME"
r.open sql,c,3,1
dim fs,f
set fs=CreateObject("Scripting.FileSystemObject")
do until r.EOF
set f=fs.OpenTextFile(folder & "\\" & r("OBJECT_TYPE") & "_" & r("OBJECT_NAME") & ".sql",8,true)
f.WriteLine r("DEFINITION")
r.MoveNext
f.close
loop
r.close
end if
关于sql - 从Oracle数据库获取所有建表脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30569620/