【问题标题】:Import a table from one user to another Oracle SQL将一个用户的表导入另一个 Oracle SQL
【发布时间】:2018-08-09 13:31:42
【问题描述】:

是否可以从 Oracle 的导出 dmp 文件中将一个用户的表导入另一个用户?

如果是,怎么做?

我有 2 个用户:MILLER 和 DUMMY。米勒有表行星。我已经使用命令提示符从 MILLER (last.dmp) 导出,并且我想从导出文件将表 import 导入 DUMMY 用户。

我已经尝试过使用来自here 的信息,但没有帮助。

如果需要,我也可以添加命令提示符日志。

【问题讨论】:

  • 我认为您正在寻找 REMAP_SCHEMA 选项。 Find out more.
  • 你用了什么工具? expexpdp?
  • 我使用 exp 和 imp

标签: oracle import export


【解决方案1】:

如果您使用“原始导入”实用程序,您应该考虑:

  • 用户名在导入操作前必须存在;否则返回错误。
  • 需要 IMP_FULL_DATABASE 角色才能使用此参数。要导入到与最初包含对象的架构不同的架构,请指定 TOUSER。

更多信息here

【讨论】:

    【解决方案2】:

    谢谢大家。这是解决方案:

    1) 将 IMP_FULL_DATABASE 授予 DUMMY;

    2) 在系统上更改用户 DUMMY 配额 50m; (因为我有错误 IMP-00058:遇到 ORACLE 错误 1950

    ORA-01950: 对表空间 'SYSTEM' 没有权限

    导入成功终止并出现警告。)

    3) 在命令提示符下使用 FROMUSER 和 TOUSER:

    C:\>imp dummy@test3 fromuser=miller touser=dummy
    

    【讨论】:

      【解决方案3】:

      这是完整的过程

      出口:

      expdp schema1/password dumpfile=Imported_Table1.dmp  directory=DIR tables=sourceTablename;
      

      进口:

      impdp schema2/password DIRECTORY=DIR DUMPFILE=Imported_Table1.dmp 
      remap_table=schema1.tablename:*destTablename*
      remap_schema=schema1:schema2 TABLE_EXISTS_ACTION=append;
      

      destTablename -> 目标模式中的表名。如果表存在,则系统导入数据,否则系统使用数据创建一个新表。

      参考:TABLE_EXISTS_ACTION

      解决的问题:

      ORA-39002: 无效操作

      ORA-39166: 找不到或无法找到对象 schema2.tablename 导出或导入。

      表 "schema2"."tablename" 存在。由于跳过的 table_exists_action 将跳过所有依赖的元数据和数据

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-14
        • 2012-12-13
        • 2013-12-14
        • 2011-10-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多