如何从 Oracle 导出中提取过程、函数等源代码

Mat*_*day 7 source-control oracle export import

EXPDAT.DMP使用以下命令生成了一个 Oracle 数据库文件:

exp userid=usr/pass@db owner=own rows=n compress=n
Run Code Online (Sandbox Code Playgroud)

然后我运行以下命令来生成一个包含“创建表...”语句的文件:

imp userid=usr/pass@db full=y indexfile=output.sql
Run Code Online (Sandbox Code Playgroud)

这对于 Create Table 语句非常有用,但我也想要 Create Procedure / Create Function / Create View 源代码。我可以在 .DMP 文件中看到它们,但我还没有找到提取它们的方法。

是否可以从 EXPDAT.DMP 文件中提取此信息?或者我需要使用另一种方法吗?

目的是将源代码导出到可以进行源代码控制的文件中。

Gar*_*ary 8

如果您可以访问原始数据库,我会选择 DBMS_METADATA.GET_DDL。

您可以使用 UTL_FILE 为其编写脚本,以便它遍历每个对象(来自 USER_OBJECTS),使用名称和类型提取对象,然后将其写入具有适当命名约定的文件。

这比尝试拆分单个文件要干净得多。