Oracle 导出导入数据

最近用到Oracle导出导入数据,在网上看了别人的一些文章,总结如下:

  Oracle导出导出有两中方式:一、利用exp imp导出导入;二、利用Oracel数据泵expdp impdp导出导入。

  一、利用exp imp导出导入

  exp imp 语法如下:

  exp:

  1) 将数据库orcl完全导出

    exp system/[email protected] file=d:\orcl_bak.dmp full=y

  2) 将数据库中system用户的表导出

    exp system/[email protected] file=d:\system_bak.dmp owner=system

  3) 将数据库中表table1,table2导出

    exp system/[email protected] file=d:\table_bak.dmp tables=(table1,table2)

  4) 将数据库中的表customer中的字段mobile以"139"开头的数据导出

    exp system/[email protected] file=d:\mobile_bak.dmp tables=customer query=\"where mobile like ‘139%‘ \"

  imp:

  1) 将备份文件bak.dmp导出数据库

    imp system/[email protected] file=d:\bak.dmp

    如果数据表中表已经存在,会提示错误,在后面加上ignore=y就可以了。  

  2) 将备份文件bak.dmp中的表table1导入

    imp system/[email protected] file=d:\bak.dmp tables=(table1)

  exp imp导出导入数据方式的好处是只要你本地安装了Oracle客户端,你就可以将服务器中的数据导出到你本地计算机。同样也可以将dmp文件从你本地导入到服务器数据库中。但是这种方式在Oracle11g版本中会出现一个问题:不能导出空表。Oracle11g新增了一个参数deferred_segment_creation,含义是段延迟创建,默认是true。当你新建了一张表,并且没用向其中插入数据时,这个表不会立即分配segment。

  解决办法:

  1、设置deferred_segment_creation参数为false后,无论是空表,还是非空表,都分配segment。

  在sqlplus中,执行如下命令:

  SQL>alter system set deferred_segment_creation=false;

  查看:

  SQL>show parameter deferred_segment_creation;

  该值设置后,只对后面新增的表起作用,对之前建立的空表不起作用,并且注意要重启数据库让参数生效。

  2、使用 ALLOCATE EXTEN

  使用 ALLOCATE EXTEN可以为数据库对象分配Extent,语法如下:

  alter table table_name allocate extent

  构建对空表分配空间的SQL命令:

  

  SQL>select ‘alter table ‘||table_name||‘ allocate extent;‘ from user_tables where num_rows=0

  批量生成要修改的语句。

  然后执行这些修改语句,对所有空表分配空间。

  此时用exp命令,可将包括空表在内的所有表导出。

  

  二、利用expdp impdp导出导入

  在Oracle10g中exp imp被重新设计为Oracle Data Pump(保留了原有的 exp imp工具)

  

  数据泵与传统导出导入的区别;

  1) exp和imp是客户端工具,他们既可以在客户端使用,也可以在服务端使用。  

  2) expdp和impdp是服务端工具,只能在Oracle服务端使用。

  3) imp只适用于exp导出文件,impdp只适用于expdp导出文件。

  

  expdp导出数据:

  1、为输出路径建立一个数据库的directory对象。

    create or replace directory dumpdir as ‘d:\‘;

    可以通过:select * from dba_directories;查看。

  2、给将要进行数据导出的用户授权访问。

    grant read,write on directory dumpdir to test_expdp;

  3、将数据导出

    expdp test_expdp/test_expdp directory=dumpdir dumpfile=test_expdp_bak.dmp logfile=test_expdp_bak.log schemas=test_expdp

    注意:这句话在cmd窗口中运行,并且最后不要加分号,否则会提示错误。因为这句话是操作系统命令而不是SQL。

  impdp导入数据:

    1、给将要进行数据导入的用户授权访问。

      grant read,write on directory dumpdir to test_impdp;

    2、将数据导入

      impdp test_impdp/impdp directory=dumpdir dumpfile=test_expdp_bak.dmp remap_schema=test_expdp:test_impdp

  最后:这些内容是我在查找资料时找到,由于比较杂乱,现在稍作整理,方便以后查阅。同时,如果能给需要的人提供一些帮助,那就再好不过了。

时间: 2024-08-23 23:59:27

Oracle 导出导入数据的相关文章

oracle imp导入数据到另一个表空间

http://blog.163.com/[email protected]/blog/static/7156283420100531431855/ 1.在第一个数据库导出数据:qlyg_xs_db_chinatelecom_0910191029.dmp(用户为QLYG_XS) 2.将qlyg_xs_db_chinatelecom_0910191029.dmp 扶着到第二个数据库所在主机上 3.第二个数据库建立需要导入的表空间和用户QLYGKQ,QLYGKQ1(用户QLYGKQ1的默认表空间为QL

导出/导入数据

以下演示了如何导出/导入数据 string file = Server.MapPath("/data.xml"); Code.ProductDataManage.Instance.ExportToFile(file, b => b.Id > 0);//导出到文件 Response.Write("成功导出到文件:" + file); var xml = Code.ProductDataManage.Instance.ExportToXml(b =>

NPOI导出导入数据

注意:以下均为服务器控件 //导入数据 protected void btnImport_Click(object sender, EventArgs e)        {            if (this.fileImport.HasFile)//判断fileImport控件中是否有需要上传的文件            { //判断文件类型是否符合要求                if (Path.GetExtension(this.fileImport.FileName) != "

ORACLE impdp 导入数据

1 table_exists_action参数说明 使用imp进行数据导入时,若表已经存在,要先drop掉表,再进行导入. 而使用impdp完成数据库导入时,若表已经存在,有四种的处理方式: 1)  skip:默认操作 2)  replace:先drop表,然后创建表,最后插入数据 3)  append:在原来数据的基础上增加数据 4)  truncate:先truncate,然后再插入数据 2 实验预备 2.1 sys用户创建目录对象,并授权 SQL> create directory dir

Oracle导出导入指定表

从源数据库导出: exp user1/pwd@server1 file=c:\temp\exp.dmp tables=(table1, table2) 导入到目标数据库: imp user2/pwd@server2 file=c:\temp\exp.dmp tables=(table1, table2) Oracle就是有这个优点,能够直接将远程的数据导出到本地.或者将本地的数据文件导入到远程数据库. 而SQL SERVER的备份.还原文件,一定是放在远程服务器本机的. 补充一下,假设有很多表.

expdp、impdp数据泵导出导入数据

1.创建逻辑目录,该命令并不会创建正在的目录(请先创建真正的目录),以system管理员创建逻辑目录. sql>sqlplus system/[email protected] as sysdba sql>create directory dump_dir as 'd:\expdb'; 2.查看管理员目录(同时查看操作系统是否创建了该目录,oracle并不会关心是否创建了该目录,如果目录不存在,则会出错) sql>select * from dba_directories; 3.给需要操

MySQL 之 导出导入数据

导出数据库(sql脚本)  mysqldump -u 用户名 -p 数据库名 > 导出的文件名mysqldump -u root -p --databases db_name > test_db.sql                 ##得到整个数据库,最全面::不要--databases也行,就是不够信息全面 mysql导出数据库一个表 mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名mysqldump -u wcnc -p test_db users>

使用 Navicat 8.0 管理mysql数据库(导出导入数据)

http://dxcns.blog.51cto.com/1426423/367105 使用Navicat For MySql 将mysql中的数据导出,包括数据库表创建脚本和数据 (1)数据的导出:右键--->“转储sql文件” 至此,已完成了数据的导出操作. (2)数据的导入:先创建好数据库,这时数据库是空的,接下来我们进行数据导入:选择需要导入数据的数据库名,右键 > 运行批次任务文件 选择刚才我们导出的SQL文件 好,下面我们点开始, 待执行完后,就完成数据导入了

redis-dump导出导入数据

安装redis-dump [sudo] npm install redis-dump -g 导出数据 redis-dump -u 192.168.1.28:6379 >db.json 导入数据 < db.json redis-load