expdp与impdp导出导入特定表方式

 更新时间:2025年01月14日 08:47:00   作者:左直拳  
文章介绍了在Oracle数据库中导入导出特定表的方法,包括在10g和11g/12c中的操作区别,以及如何使用DBBAK文件夹作为导出文件的存储,同时,文章指出了在Windows Server 2012及以上版本中使用PowerShell时可能会遇到的问题,建议在DOS命令行窗口中执行相关操作

expdp与impdp导出导入特定表

oracle里导入导出特定的表,原本在10g或以前,很简单的:

一、10g或以前

1、导出指定表
exp 'sys/pwd@server1 as sysdba' file=c:\temp\tables.dmp tables=(schema1.table1,schema1.table2)

2、导入指定表
imp 'sys/pwd@server2 as sysdba' file=c:\temp\tables.dmp fromuser=schema1 touser=schema1 tables=(table1,table2) ignore=Y

二、11g或12c

但12C以后,似乎就不支持这种写法了。

可以这样写:

1、导出指定表
expdp 'sys/pwd@server1 as sysdba' directory=dbbak dumpfile=tables.dmp logfile=tables.log tables=schema1.table1,schema1.table2

2、导入指定表
--如果源库和目标库对应的表空间名称一样:
impdp 'sys/pwd@server2 as sysdba' directory=dbbak dumpfile=tables.dmp tables=schema1.table1,schema1.table2  REMAP_SCHEMA=schema1:schema1
--REMAP_SCHEMA=schema1:schema1,源库shema:目标库schema

--如果源库和目标库对应的表空间名称不一样:
impdp 'sys/pwd@server2 as sysdba' directory=dbbak dumpfile=tables.dmp tables=schema1.table1,schema1.table2  remap_schema=schema1:schema2 remap_tablespace=tablespace1:tablespace2 
--remap_schema=schema1:schema2,源库shema:目标库schema
--remap_tablespace=tablespace1:tablespace2,源表空间:目标表空间

注意目标库的schema对应的账号,因为可能涉及到创建表等各种元素,要有足够的权限,才能导进去

其中,dbbak没有的话,要先创建:

在sqlplus下:

create directory dbbak as 'c:\temp';--(将dbbak挂载到操作系统下的c:/temp文件夹)
grant read,write on directory dbbak to public;

这个dbbak(名字是自己随便起的)是个啥东东呢?是我们存放数据导出文件的地方,它挂载到操作系统的某个文件夹,比如c:\temp。据说数据库某种程度上类似一个操作系统,它有自己的一套磁盘管理机制,一般不直接使用操作系统的文件系统。甚至乎,它希望直接使用“生磁盘”,就是没有格式化过的磁盘。所以,dbbak是一个磁盘路径映射,要将操作系统下的路径映射到oracle里,才能使用。

以上这个expdp,impdp导出导入特定表,网上搜了之后,发觉很少有直接能使用的例子,我这两个还是综合起来,经过一些测试才通过的。

三、注意

注意10g可以在客户端直接执行导入导出;而11g或12c,只能在服务器端执行。

另外,如果操作系统是WIN2012或以上操作系统,你在power shell里运行以上代码,是不行的。一定要在DOS命令行窗口才可以。似乎这个power shell还停留在oracle 10g时代,一点也不power。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Oracle 实现类似SQL Server中自增字段的一个办法

    Oracle 实现类似SQL Server中自增字段的一个办法

    由于Oracle中没有类似SQL Server中的自增字段,所以我们如果想要通过设定类似ID性质的唯一列的话,需要借助Oracle的sequence,先建立一个序列,然后在每次插入数据的时候,通过前触发器来更新ID值,并将序列的序号加1,这样的迂回方式来实现。
    2009-07-07
  • oracle—SQL技巧之(一)连续记录查询sql案例测试

    oracle—SQL技巧之(一)连续记录查询sql案例测试

    有这样一个需求:需要查询出某个客户某一年那些天是有连续办理过业务,本文给予sql实现语句并测试,感兴趣的朋友可以了解下
    2013-01-01
  • Oracle数据泵实现不同用户导入导出表级

    Oracle数据泵实现不同用户导入导出表级

    这篇文章主要介绍了Oracle数据泵实现不同用户导入导出表级,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • Oracle Form中COMMIT的概述及使用技巧

    Oracle Form中COMMIT的概述及使用技巧

    针对form上面的数据变动提交到后台数据库,同时数据库提交数据,接下来将详细介绍下Form中COMMIT的使用,感兴趣的你可以参考下本文
    2013-03-03
  • Oracle数据库执行慢问题排查详细过程

    Oracle数据库执行慢问题排查详细过程

    这篇文章主要给大家介绍了关于Oracle数据库执行慢问题排查的详细过程,在企业级应用中,数据库的稳定性和性能是至关重要的,文中给出了详细的代码实例,需要的朋友可以参考下
    2023-07-07
  • oracle11g客户端连接12c服务器ORA-01017错误问题解决

    oracle11g客户端连接12c服务器ORA-01017错误问题解决

    这篇文章主要介绍了oracle11g客户端连接12c服务器ORA-01017错误,本文给大家分享完美解决方法,对oracle 12c错误ORA-01017问题解决方法感兴趣的朋友跟随小编一起看看吧
    2023-06-06
  • oracle表空间表分区详解及oracle表分区查询使用方法

    oracle表空间表分区详解及oracle表分区查询使用方法

    racle表空间表分区详解及oracle表分区查询使用方法,大家参考使用吧
    2013-12-12
  • Oracle中case when函数的用法

    Oracle中case when函数的用法

    这篇文章介绍了Oracle中case when函数的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • EXISTS关键字在Oracle中的简单使用例子

    EXISTS关键字在Oracle中的简单使用例子

    在Oracle中IN和EXISTS都是用于子查询的比较运算符,但它们的使用方式和操作结果有所不同,这篇文章主要给大家介绍了关于EXISTS关键字在Oracle中的简单使用,需要的朋友可以参考下
    2024-04-04
  • Oracle创建Database Link的两种方式详解

    Oracle创建Database Link的两种方式详解

    Oracle数据库如何创建Database Link呢?本文我们主要就介绍一下这部分内容,Oracle数据库创建Database Link有两种方式,一种是通过菜单,一种是通过SQL
    2016-02-02

最新评论