3

我在使用 impdm 和 expdp 导出/导入数据库时​​遇到了困难。

我有一个有效的模式,其中有几个使用类似于以下语句创建的工作视图:

CREATE OR REPLACE FORCE VIEW someView (column1, column2, etc) AS SELECT column1, column2, etc FROM someTable;

我可以毫无问题地查询视图,并且得到有效的结果:

SELECT * FROM someView;

但是,如果我尝试使用 expdp 导出视图的 DDL,甚至执行简单的 dbms_metadata.get_ddl 查询。IE:

SELECT dbms_metadata.get_ddl('VIEW','someView','someSchema') FROM DUAL

...那么一些视图 ddls 将缺少 SELECT 关键字。因此,我没有取回最初用于创建视图的原始 DDL,而是得到如下内容:

CREATE OR REPLACE FORCE VIEW someView (column1, column3, etc) AS column1, column2, etcfrom someTable;

这使我无法进行图像导出/导入,因为在导入步骤中事情会爆炸:

ORA-39083:创建对象类型 VIEW 失败,出现错误:ORA-00928:缺少 SELECT 关键字

建议?

我在 Windows 上使用 Oracle 11.2。

4

1 回答 1

3

这是一个可能对您有用的解决方法,如果您想导出视图脚本(仅选择语句),您可以从系统表访问视图代码USER_VIEWS(假设您可以访问它。视图的脚本在列下TEXT这是一个示例查询

Select view_name,text
From user_views

获得 select 语句后,您可以进行一些简单的字符串处理并附加CREATE OR REPLACE ...语法

我发现这些系统表非常有用

于 2013-07-17T16:54:22.470 回答