我有一个Oracle数据库,其中包含很多表和很多属性,例如:主键,唯一键,外键,索引,特权和分区。
我需要在新的Oracle数据库中创建具有相同属性的相同表。有没有一种方法可以为数据库中的所有表生成单个创建脚本?
谢谢
是的。您可以在下面的查询中执行,“定义”列中的内容是一个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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句