impdp数据表table导入

平常都是对数据库或schema备份还原的,对特定table导入的事情倒是做得很少!

今天要导入指定table操作时,发现oracle有些个别约束!

不多说了,看示例吧!

错误一:不能同时使用schemas与tables参数

$ impdp hfy121123/kingdee schemas=hfy tables=CT_HSE_CusBaseCode remap_schema=hfy:HFY121123 directory=easbak dumpfile=hfy201211230200.dmp logfile=20121123imp.log

Import: Release 11.2.0.2.0 - Production on Fri Nov 23 16:03:01 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
UDI-00010: multiple job modes requested, schema and tables.

$ 


错误二:CT_HSE_CusBaseCode默认被认为是当前用户的表,所以在导入时需要限定

$ impdp hfy121123/kingdee tables=CT_HSE_CusBaseCode remap_schema=hfy:HFY121123 directory=easbak dumpfile=hfy201211230200.dmp logfile=20121123imp.log

Import: Release 11.2.0.2.0 - Production on Fri Nov 23 15:38:47 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORA-39002: invalid operation
ORA-39166: Object HFY121123.CT_HSE_CUSBASECODE was not found.

$ 

 

错误三:其实严格来说这个算不得错误的,起码在语法上并没有什么问题。

$ impdp hfy121123/kingdee tables=hfy.CT_HSE_CusBaseCode directory=easbak dumpfile=hfy201211230200.dmp logfile=20121123imp.log

Import: Release 11.2.0.2.0 - Production on Fri Nov 23 16:12:28 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Master table "HFY121123"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
Starting "HFY121123"."SYS_IMPORT_TABLE_01":  hfy121123/******** tables=hfy.CT_HSE_CusBaseCode directory=easbak dumpfile=hfy201211230200.dmp logfile=20121123imp.log 
Processing object type SCHEMA_EXPORT/TABLE/TABLE
ORA-39151: Table "HFY"."CT_HSE_CUSBASECODE" exists. All dependent metadata and data will be skipped due to table_exists_action of skip
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "HFY121123"."SYS_IMPORT_TABLE_01" completed with 1 error(s) at 16:12:35

$ 

在分析这个问题前,我们先来了解下oracle关于导入导出的一个事实:oracle从数据库导出dmp文件,默认不会改变各对象(如:table、index等)的相关属性(如:schema、tablespace等)。

注:其实我也是后来才明白这个事实的,不过对于oracle在导出dmp文件时能否修改对象(如:table、index等)的属性暂时还不清楚,以后再研究吧。

既然我们已经清楚了这个情况,那出现这个问题也就能理解了:我的用户hfy121123与hfy是在相同数据库实例环境下的操作,所以默认导入的表CT_HSE_CusBaseCode自然所属用户是hfy,所以也就出现表已存在的问题了!


正确:指定了表的所属用户,指定schema从hfy到hfy121123

(如果这是在不同的数据库操作,就要考虑下当前操作的数据库实例下 是否具有原导出表所属表空间 的相同的表空间名的表空间了!这,,,好别扭啊,不知道该如何描述才能表达我的意思~``~)

$ impdp hfy121123/kingdee tables=hfy.CT_HSE_CusBaseCode remap_schema=hfy:HFY121123 directory=easbak dumpfile=hfy201211230200.dmp logfile=20121123imp.log

Import: Release 11.2.0.2.0 - Production on Fri Nov 23 14:10:38 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Master table "HFY121123"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
Starting "HFY121123"."SYS_IMPORT_TABLE_01":  hfy121123/******** tables=hfy.CT_HSE_CusBaseCode remap_schema=hfy:HFY121123 directory=easbak dumpfile=hfy201211230200.dmp logfile=20121123imp.log 
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "HFY121123"."CT_HSE_CUSBASECODE"            688.5 KB    2471 rows
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "HFY121123"."SYS_IMPORT_TABLE_01" successfully completed at 14:10:47

$ 

这里顺便再提下另外的问题:当然如果我不指定remap_tablespace参数,表导入后的所属表空间也是不会发生变化的,如果当前数据库不存在相应的表空间就会报错了)。


其实,这些都是可举一反三的!

稍稍理解下oracle的想法,理解下这几个参数的含义,其它的备份还原操作自然也就明白知道该怎么使用了!!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以按照以下步骤在Linux系统中使用impdp命令导入Oracle数据表: 1. 确认数据库已经创建,并且已经创建了需要导入的表。 2. 在Linux终端中,使用以下命令登录到Oracle数据库: ``` sqlplus username/password@database ``` 其中,username为数据库用户名,password为密码,database为数据库名称。 3. 使用以下命令创建目录对象,用于存放导入数据的文件: ``` CREATE DIRECTORY dump_dir AS '/u01/dump'; ``` 其中,dump_dir为目录名称,/u01/dump为目录路径。 4. 在Linux终端中,使用以下命令导出数据表: ``` expdp username/password@database tables=table_name directory=dump_dir dumpfile=table_name.dmp logfile=table_name.log ``` 其中,table_name为需要导出的表名,username为数据库用户名,password为密码,database为数据库名称,dump_dir为目录名称。 5. 将导出的数据文件table_name.dmp复制到需要导入数据的Linux系统中。 6. 在Linux终端中,使用以下命令导入数据表: ``` impdp username/password@database directory=dump_dir dumpfile=table_name.dmp logfile=table_name_imp.log remap_schema=old_username:new_username remap_tablespace=old_tablespace:new_tablespace ``` 其中,table_name为需要导入的表名,username为数据库用户名,password为密码,database为数据库名称,dump_dir为目录名称,old_username为原用户名,new_username为新用户名,old_tablespace为原表空间名,new_tablespace为新表空间名。 7. 导入完成后,在Oracle数据库中确认数据表已经成功导入

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gary强z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值