Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 导出DDL以放置在服务器上_Sql_Oracle_Plsql_Spool - Fatal编程技术网

Sql 导出DDL以放置在服务器上

Sql 导出DDL以放置在服务器上,sql,oracle,plsql,spool,Sql,Oracle,Plsql,Spool,我想写一个SQL过程,它使用DDL命令将文件从特定模式写入服务器上的directorium。我使用spool命令完成了这项工作,并将其保存在本地,但每次运行它时都需要它在服务器上。 我正在使用Oracle RDBMS DBMS\u元数据可以是您的朋友。使用其过程GET_DDL()可以为您提供DDL脚本。您可以使用UTL_文件将其写入“Oracle DB目录”(这正是Oracle对象) 或者,您可以使用外部脚本连接到数据库,使用DBMS_元数据获取DDL 在这些情况下,您需要通过选择用户\对象(或

我想写一个SQL过程,它使用DDL命令将文件从特定模式写入服务器上的directorium。我使用spool命令完成了这项工作,并将其保存在本地,但每次运行它时都需要它在服务器上。
我正在使用Oracle RDBMS

DBMS\u元数据可以是您的朋友。使用其过程GET_DDL()可以为您提供DDL脚本。您可以使用UTL_文件将其写入“Oracle DB目录”(这正是Oracle对象)

或者,您可以使用外部脚本连接到数据库,使用DBMS_元数据获取DDL

在这些情况下,您需要通过选择用户\对象(或所有/dba对象)等来编写脚本


或者您可以使用第三方工具,例如Oraschemadoc is。

这将导出当前模式中所有对象的ddl

CREATE OR REPLACE PROCEDURE ddl_import
    IS
        file_ctl UTL_FILE.FILE_TYPE;
        CURSOR object_cv IS
        SELECT OBJECT_NAME,OBJECT_TYPE FROM USER_OBJECTS;
        code VARCHAR2(10000);
    BEGIN
        FOR cur in object_cv
        LOOP
            file_ctl:=UTL_FILE.FOPEN('ORADIR',cur.object_name||'.sql','W');
            code:=DBMS_METADATA.GET_DDL(CUR.OBJECT_TYPE,CUR.OBJECT_NAME,'ORATUT');
            UTL_FILE.PUTF(file_ctl,code);
            UTL_FILE.FCLOSE(file_ctl);
        END LOOP;
    END ddl_import;
但在编译和执行此过程之前,请确保已在步骤中完成以下操作。

步骤1:在主机(OS)环境中创建目录,并向oracle用户授予读/写权限

第2步:执行创建或替换目录ORADIR为'D:/dir_name';dir_name是您在步骤1中创建的目录的名称

第3步:请您的DBA授予您对UTL\u文件的执行权限。或者,如果您有DBA的凭据,则执行以下命令-将UTL_文件上的execute授予user_名称;用户名当然是你

1)下面是如何为模式提取ddl的描述

我们必须改变

-- add 
dest_clob clob; 
-- change
    DBMS_OUTPUT.PUT_LINE (DDL); 
    to 
    DBMS_LOB.APPEND (dest_clob, DDL);
最后

DBMS_XSLPROCESSOR.CLOB2FILE(dest_clob,dest_directory, my_schema.sql)

dest_目录具有读/写权限

您是否尝试过使用
UTL_文件
?您可以创建一个shell脚本来执行您的过程,然后将新创建的文件移动到要放置它的服务器上您确定您没有使用
content=metadata\u only
选项重新发明数据泵吗?