如何使用命令行仅从oracle数据库导出选定的函数、选定的过程、选定的视图和选定的表



假设我想导出

  • 名为V1、V2的视图
  • 名为f1、f2的函数
  • 命名为p1、p2的程序
  • 名为T1、T2 的表格

  • 用户名:系统

  • 密码:manager sid/
  • 架构:DB3

所以我在CMD上按如下方式发出命令,

(1( expdp系统/manager@DB3directory=backupdir-dumpfile=backup.dmp logfile=backup.log include=view:"IN('V1','V2'(",函数:"IN('1','f2'("、过程:"IN"('p1','p2'(",表:"IN('T1','T2'(">

(2( expdp系统/manager@DB3directory=backupdir-dumpfile=backup.dmp logfile=backup.log include=view:"IN('V1','V2'("include=function:"IN('1','f2'("include=procedure:"IN

这两个命令都不起作用:

错误:ORA-39071:INCLUDE的值格式错误。


以下命令有效,但仅导出指定的表。它不导出视图、过程和函数。

(3( expdp系统/manager@DB3directory=backupdir-dumpfile=backup.dmp logfile=backup.log include=视图、过程、函数、表:"IN('T1','T2'(">

该怎么办?

ORA-39071:INCLUDE的值是格式错误的

命令行不喜欢引号。有两种方法可以解决这个问题。

第一个是转义引号:

expdp system/manager@DB3 directory=backupdir dumpfile=backup.dmp logfile=backup.log 
include=view:"IN ('V1','V2')" include=function:"IN ('f1','f2')" include=procedure:"IN ('p1','p2')" include=table:"IN ('T1','T2')"

如果这看起来很乏味(事实确实如此(,那么第二种选择就是定义一个参数文件。您可以在其中包含所有选项,而无需转义引号,只需使用PARFILE参数运行expdp即可。


架构"DBpractice"中没有任何更改,我希望在其中导入从名为DB3的架构导出的表、视图、函数和过程。

这确实是一个新问题,但解决方案很简单:您需要使用REMAP_SCHEMA参数运行impdp,该参数接受source_schema:target_schema。所以在你的情况下,这将是

impdp system/manager directory=backupdir dumpfile=backup.dmp remap_schema=db3:DBpractice

相关内容

  • 没有找到相关文章

最新更新