将表从一个用户导入到另一个Oracle SQL

时间:2018-08-09 13:31:43

标签: oracle import export

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

如果是,该怎么办?

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

我已经尝试使用here中的信息,但是对我没有帮助。

如有必要,我还可以添加命令提示符日志。

3 个答案:

答案 0 :(得分:0)

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

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

更多信息here

答案 1 :(得分:0)

谢谢大家。解决方法如下:

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

答案 2 :(得分:0)

这是完整的过程

导出:

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”。“表名”存在。由于跳过了table_exists_action,将跳过所有相关的元数据和数据