重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Oracle导出导出有两中方式:一、利用exp imp导出导入;二、利用Oracel数据泵expdp impdp导出导入。
创新互联公司于2013年成立,先为丰城等服务建站,丰城等地企业,进行企业商务咨询服务。为丰城企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
一、利用exp imp导出导入
exp imp 语法如下:
exp:
1) 将数据库orcl完全导出
exp system/manager@orcl file=d:\orcl_bak.dmp full=y
2) 将数据库中system用户的表导出
exp system/manager@orcl file=d:\system_bak.dmp owner=system
3) 将数据库中表table1,table2导出
exp system/manager@orcl file=d:\table_bak.dmp tables=(table1,table2)
4) 将数据库中的表customer中的字段mobile以"139"开头的数据导出
exp system/manager@orcl file=d:\mobile_bak.dmp tables=customer query=\"where mobile like '139%' \"
imp:
1) 将备份文件bak.dmp导出数据库
imp system/manager@orcl file=d:\bak.dmp
如果数据表中表已经存在,会提示错误,在后面加上ignore=y就可以了。
2) 将备份文件bak.dmp中的表table1导入
imp system/manager@orcl file=d:\bak.dmp tables=(table1)
exp imp导出导入数据方式的好处是只要你本地安装了Oracle客户端,你就可以将服务器中的数据导出到你本地计算机。同样也可以将dmp文件从你本地导入到服务器数据库中。但是这种方式在Oracle11g版本中会出现一个问题:不能导出空表。Oracle11g新增了一个参数deferred_segment_creation,含义是段延迟创建,默认是true。当你新建了一张表,并且没用向其中插入数据时,这个表不会立即分配segment。
解决办法:
1、设置deferred_segment_creation参数为false后,无论是空表,还是非空表,都分配segment。
在sqlplus中,执行如下命令:
SQLalter system set deferred_segment_creation=false;
查看:
SQLshow parameter deferred_segment_creation;
该值设置后,只对后面新增的表起作用,对之前建立的空表不起作用,并且注意要重启数据库让参数生效。
2、使用 ALLOCATE EXTEN
使用 ALLOCATE EXTEN可以为数据库对象分配Extent,语法如下:
alter table table_name allocate extent
构建对空表分配空间的SQL命令:
SQLselect '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
数据导出:
1将数据库TEST完全导出,用户名system密码manager导出到D:\daochu.dmp中
expsystem/manager@TESTfile=d:\daochu.dmpfull=y
2将数据库中system用户与sys用户的表导出
expsystem/manager@TESTfile=d:\daochu.dmpowner=(system,sys)
3将数据库中的表table1、table2导出
expsystem/manager@TESTfile=d:\daochu.dmptables=(table1,table2)
4将数据库中的表table1中的字段filed1以"00"打头的数据导出
expsystem/manager@TESTfile=d:\daochu.dmptables=(table1)query=\"wherefiled1like '00%'\"
PL SQL 的tool 菜单下面有一个export objects ,点开这个可以然后选择你要选择的对象,选择保存位置,导出就可以了, 所有对象类型都可以
你可以在cmd底下试试exp指令。\x0d\x0aexp username/password@tnsname owner=要导出的用户名 file=.....\x0d\x0aexp具体的参数你可以到网上详细查一下。 \x0d\x0a\x0d\x0a基本语法和实例: \x0d\x0a 1、EXP: \x0d\x0a 有三种主要的方式(完全、用户、表) \x0d\x0a 1、完全: \x0d\x0a EXP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y \x0d\x0a 如果要执行完全导出,必须具有特殊的权限 \x0d\x0a 2、用户模式: \x0d\x0a EXP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC \x0d\x0a 这样用户SONIC的所有对象被输出到文件中。 \x0d\x0a 3、表模式:\x0d\x0a EXP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC TABLES=(SONIC) \x0d\x0a 这样用户SONIC的表SONIC就被导出
Oracle 数据库导入与导出 使用oracle 的导入导出 下面这些在使用过程中经常使用到的.(以后加上调优的参数说明,SGA 区,共享池,PGA,等等 spfile 里面的参数) 1.Export 工具是一个导出程序 语法: exp UserId/Password@数据库全局名 file=DMP 文件的目录 其它参数 获取帮助,敲入:exp help=y Export 常用的参数(1) Direst 选择是否采用直接路径导出 File 指定导出文件名 Full Full=Y 将整个数据库导出 Incremental 导出上次Incremental 、Cumulative、Complete 导出而改变的所有对象 Cumulative 导出上次Cumulative、Complete 导出后改变的所有对象 Complete 导出所有的对象 Indexes 指定索引是否被导出 Export 常用的参数(2) Log 指定日志的文件名 Owner 允许为指定的用户导出对象 Parfile 允许从一个文件读取导出参数 Query 指定从表中导出符合条件的行 Record 指定是否在导出系统表中记录Incremental 或Cumulative 导出,默认为Y Rows 控制表数据是否被导出 Tables 允许导入一个或多个表 Triggers 指定触发器是否和表一起导出 2.Import 工具是一个导入程序 语法: imp UserId/Password@数据库全局名 file=DMP 文件的目录 其它参数 获取帮助,敲入:imp help=y Import 常用的参数(1) File 指定导入文件名 Fromuser 允许导入指定的用户拥有的表 Full full=Y 时,导入DMP 文件中所有的事物 Ignore 为Y 时,如果数据出错,将继续下一行数据 Indexes 是否导入索引 Log 指定日志文件 Parfile 指定从文件中读导出参数 Rows 指定是否导入表的数据 Import 常用的参数(2) Show 指定显示全部要被执行的参数 Tables 指定导入一个或多个表 Touser 指定导入到哪个用户名下 Userid 指定导入的用户的用户名和密码 3.SQL*Loader 简介 SQL*Loader 从文本文件导数据到数据库中。功能包括: 从定界文件装数据 从固定长度的文本文件装数据 从二进制文件装数据 在输入文件中过滤数据 SQL*Loader 使用的数据类型 Char:该char 和数据库中的char 类型不同,它包括数据库中的char、varchar、CLOB 等类型 Date:时间类型 Interger external:定义整数值 Decimal external:定义包括小数点的数值 装载字段固定长度的文件 一个例子: Load data infile ‘yyb_data.txt’ append Into table emp ( name position(1:10) char, rank position(11:13) interger external, birthday position(13:23) date “dd-mm-yyyy” ) 导入有界定符的文件 一个例子: Load data Infile ‘c:\yyb.txt’ append Into table emp ( name char terminated by ‘,’, rank interger external terminated by ‘,’, birthday date “ ) 导入有界定符的文件 (续) 再看一个例子(处理空字段): Load data Infile ‘c:\yyb.txt’ append Into table emp trailing nullcols ( name char terminated by ‘,’, rank interger external terminated by ‘,’, birthday date “dd-mm-yyyy” terminated by ‘,’ ) 如何把数据放到表中 从前面的例子中可以看出,它们都包含关键字append,还有其它的关键字: Insert:指定要装载的是空表,否则失败 Append:添加数据到表,即使表中有数据 Replace:加载前,将删除表中的所有数据 Truncate:与replace 同 使用SQL*Loader 命令和参数 命令语法为: sqlldr [param=value [,param= valus �6�7 ] ] 参数: Userid 用户名和密码 Control 指定控制文件名,也就是存放前面的胶片中的代码的文件 Log 指定日志文件名 Bad 指定存放坏记录的文件名 SQL*Loader 参数(续前) Data 指定数据文件名 Skip 允许跳过的记录数量 Load 允许装入的记录数量 Errors 指定允许的错误数 Rows 指定装载多少条记录提交一次 Direct 可以指定为直接路径装载 Parfile 指定包含命令参数的文件名 举个例子来说明: (1)先创建一张表: create table test_load( stu_num number(10,0), stu_name varchar2(50), stu_date date ) (2)准备数据文件(可以采用spool 导出,再下来会讲到): dateFile.txt "1234","niegc","2006-01-01" "1235","ngc","2006-01-02" (3)写控制文件(必须注意每一个字段的位置,和时间字段的格式):loader.ctl Load data infile 'F:\test\dateFile.txt' Append into table test_load fields Terminated by "," Optionally enclosed by'"' ( stu_num, stu_name, stu_date date "YYYY-MM-DD" ) (3)执行sqlldr C:\Documents and Settings\Administratorsqlldr niegc/niegc control=f:\test\loader.ctl log=f:\test\aaaaaa.log SQL*Loader: Release 9.2.0.1.0 - Production on 星期三 4 月 26 22:06:35 2006 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. 达到提交点,逻辑记录计数2 成功了,是不是很简单,append 还是insert 上面有说明的哦. 4.Spool 简介 spool 是数据的导出命令,最简单的执行如下: 用sqlplus 登陆: SQLspool f:\test\bbb.txt SQL select * from test_load; STU_NUM STU_NAME STU_DATE ---------- -------------------------------------------------- ---------- 1234 niegc 01-1 月 -06 1235 ngc 02-1 月 -06 SQL spool off 这样就可以导出了 如果你想导出自己定义的格式,你可以先set 参数然后再spool 例如: SET COLSEP ' ' SET ECHO OFF SET FEEDBACK OFF SET HEADING OFF SET PAGESIZE 0 SET LINESIZE 1000 SET NUMWIDTH 12 SET TERMOUT OFF SET TRIMOUT ON SET TRIMSPOOL ON
方法/步骤
用pl/sql developer导出表的数据时有三种方式:Oracle Export,Sql Insert,pl/sql developer
区别
导出数据到excel文件
excel数据导入到数据库
PL/SQL Developer是Oracle数据库中用于导入或导出数据库的主要工具之一,这里主要介绍如何利用PL/SQL Developer导入和导出数据库,并对导入或导出时的一些注意事项进行相关说明。1、导出步骤1.1. tools -export user object 选择选项,导出.sql文件 说明:导出的是建表语句(包括存储结构)
1.2. tools -export tables- Oracle Export 选择选项导出.dmp文件 说明:包含三种导出方式,三种方式都能导出表结构以及数据,如下:
第一种是导出为.dmp的文件格式,.dmp文件是二进制的,可以跨平台,还能包含权限,效率也很不错,用得最为广泛 。
第二种是导出为.sql文件的,可用文本编辑器查看,通用性比较好,但效率不如第一种,适合小数据量导入导出。尤其注意的是表中不能有大字段(blob,clob,long),如果有,会提示不能导出(提示如下: table contains one or more LONG columns cannot export in sql format,user Pl/sql developer format instead)。
第三种是导出为.pde格式的,.pde为Pl/sql developer自有的文件格式,只能用Pl/sql developer自己导入导出,不能用编辑器查看。
2.导入步骤:a.tools-import tables-SQL Inserts 导入.sql文件。b. tools-import talbes-Oracle Import然后再导入dmp文件。 说明:和导出类似,另外,导入之前最好把以前的表删除,当然导入另外数据库除外。