ORACLE数据导出和导入Cd\回到根目錄分类:技术积累2007.3.420:14作者:海之声|评论:0|阅读:0一.导出工具exp1.它是操作系统下一个可执行的文件存放目录/ORACLE_HOME/binexp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移它有三种模式:a.用户模式:导出用户所有对象以及对象中的数据;b.表模式:导出用户所有表或者指定的表;c.整个数据库:导出数据库中所有对象。2.导出工具exp交互式命令行方式的使用的例子$exptest/test123@appdbEnterarrayfetchbuffersize:4096回车Exportfile:expdat.dmpm.dmp生成导出的文件名(1)E(ntiredatabase),(2)U(sers),or(3)T(ables):(2)U3Exporttabledata(yes/no):yes回车Compressextents(yes/no):yes回车ExportdoneinZHS16GBKcharactersetandZHS16GBKNCHARcharactersetAbouttoexportspecifiedtablesviaConventionalPath...Table(T)orPartition(T:P)tobeexported:(RETURNtoquit)cmamenu要导出的表名..exportingtableCMAMENU4336rowsexportedTable(T)orPartition(T:P)tobeexported:(RETURNtoquit)要导出的表名nTable(T)orPartition(T:P)tobeexported:(RETURNtoquit)回车Exportterminatedsuccessfullywithoutwarnings.3.导出工具exp非交互式命令行方式的例子$expscott/tigertables=(emp,dept)file=/directory/scott.dmpgrants=y说明:把scott用户里两个表emp,dept导出到文件/directory/scott.dmp$expscott/tigertables=empquery=\wherejob=\'salesman\'andsal\1600\file=/directory/scott2.dmp说明:在exp里面加上导出emp的查询条件job='salesman'andsal1600(但我个人很少这样用,还是把满足条件的记录生成临时表后,再exp会方便一些)$expparfile=username.parfile=/directory1/username_1.dmp,/directory1/username_2.dmpfilesize=2000Mlog=/directory2/username_exp.log参数文件username.par内容userid=username/userpasswordbuffer=8192000compress=ngrants=y说明:username.par为导出工具exp用的参数文件,里面具体参数可以根据需要去修改filesize指定生成的二进制备份文件的最大字节数(可用来解决某些OS下2G物理文件的限制及加快压缩速度和方便刻历史数据光盘等)二.导入工具imp1.它是操作系统下一个可执行的文件存放目录/ORACLE_HOME/binimp导入工具将EXP形成的二进制系统文件导入到数据库中.它有三种模式:a.用户模式:导出用户所有对象以及对象中的数据;b.表模式:导出用户所有表或者指定的表;c.整个数据库:导出数据库中所有对象。只有拥有IMP_FULL_DATABASE和DBA权限的用户才能做整个数据库导入imp步骤:(1)createtable(2)insertdata(3)createindex(4)createtriggers,constraints2.导入工具imp交互式命令行方式的例子$impImport:Release8.1.6.0.0-Productionon星期五12月717:01:082001(c)Copyright1999OracleCorporation.Allrightsreserved.用户名:test口令:****连接到:Oracle8iEnterpriseEditionRelease8.1.6.0.0-64bitProductionWiththePartitioningoptionJServerRelease8.1.6.0.0-Production导入文件:expdat.dmp/tmp/m.dmp输入插入缓冲区大小(最小为8192)30720经由常规路径导出由EXPORT:V08.01.06创建的文件警告:此对象由TEST导出,而不是当前用户已经完成ZHS16GBK字符集和ZHS16GBKNCHAR字符集中的导入只列出导入文件的内容(yes/no):no由于对象已存在,忽略创建错误(yes/no):noyes导入权限(yes/no):yes导入表数据(yes/no):yes导入整个导出文件(yes/no):noyes.正在将TEST的对象导入到SCOTT..正在导入表CMAMENU4336行被导入成功终止导入,但出现警告。3.导入工具imp非交互式命令行方式的例子$impsystem/managerfromuser=jonestables=(accts)$impsystem/managerfromuser=scotttables=(emp,dept)$impsystem/managerfromuser=scotttouser=joetables=emp$impscott/tigerfile=expdat.dmpfull=y$impscott/tigerfile=/mnt1/t1.dmpshow=nbuffer=2048000ignore=ncommit=ygrants=yfull=ylog=/oracle_backup/log/imp_scott.log$impsystem/managerparfile=params.datparams.dat内容file=dba.dmpshow=nignore=ngrants=yfromuser=scotttables=(dept,emp)4.导入工具imp可能出现的问题(1)数据库对象已经存在一般情况,导入数据前应该彻底删除目标数据下的表,序列,函数/过程,触发器等;数据库对象已经存在,按缺省的imp参数,则会导入失败如果用了参数ignore=y,会把exp文件内的数据内容导入如果表有唯一关键字的约束条件,不合条件将不被导入如果表没有唯一关键字的约束条件,将引起记录重复(2)数据库对象有主外键约束不符合主外键约束时,数据会导入失败解决办法:先导入主表,再导入依存表disable目标导入对象的主外键约束,导入数据后,再enable它们(3)权限不够如果要把A用户的数据导入B用户下,A用户需要有imp_full_database权限(4)导入大表(大于80M)时,存储分配失败默认的EXP时,compress=Y,也就是把所有的数据压缩在一个数据块上.导入时,如果不存在连续一个大数据块,则会导入失败.导出80M以上的大表时,记得compress=N,则不会引起这种错误.(5)imp和exp使用的字符集不同如果字符集不同,导入会失败,可以改变unix环境变量或者NT注册表里NLS_LANG相关信息.导入完成后再改回来.(6)imp和exp版本不能往上兼容imp可以成功导入低版本exp生成的文件,不能导入高版本exp生成的文件根据情况我们可以用$impusername/password@connect_string说明:connect_string是在/ORACLE_HOME/network/admin/tnsnames.ora定义的本地或者远端数据库的名称注意事项:UNIX:/etc/hosts要定义本地或者远端数据库服务器的主机名win98:windows\hosts和IP地址的对应关系win2000:winnt\system32\drivers\etc\hosts你可以通过这个链接引用该篇文章:引用到我的博客:0|收藏到我的博客引用到我的博客:0|收藏到我的博客安装OracleCilent后,在任何一台Cilent包含exp/imp两个工具,可以完成数据的导出/导入。程序在$ORACLE_HOME\bin下基本使用方法:导出expuser/pass@SIDfile=FILEfull=[y|n]owner=(OWNER1,OWNER2)tables=(TABBLE1,TABLE2)query=\WHERECLAUSE\compress=[y|n]参数说明:file=导出文件名称owner=导出该用户的表tables=导出的表query=导出的表的条件,即where部分,并且\\不要省略compress=是否对导出数据进行压缩例:expnpmdb/npmoptr@tjnpmfile=d:\tpd_msc.dmptables=(tpd_msc)query=\wherescan_start_time=\2006-9-1510:00:00\\导入impuser/pass@SIDfile=FILEtables=(TABLE1)ignore=[y|n]参数说明:file=要导入进来的文件tables=导入的表ignore=是否忽略错误,比如表存在例:impnpmdb/npmoptr@tjnpmfile=d:\tpd_msc.dmptables=(tpd_msc)Oracle数据导入导出imp/exp命令Postedon2007-02-0909:35jason_lb阅读(14382)评论(14)编辑收藏所属分类:数据库技术、网文摘抄Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,DOS中可以执行时由于在oracle8i中安装目录ora81BIN被设置为全局路径,该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。oracle用java编写,SQLPLUS.EXE、EXP.EXE、IMP.EXE这两个文件有可能是被包装后的类文件。SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类,完成导入导出功能。下面介绍的是导入导出的实例。数据导出:1将数据库TEST完全导出,用户名system密码manager导出到D:daochu.dmp中expsystem/manager@TESTfile=d:daochu.dmpfull=y2将数据库中system用户与sys用户的表导出expsystem/manager@TESTfile=d:daochu.dmpowner=(system,sys)3将数据库中的表inner_notify、notify_staff_relat导出expaichannel/aichannel@TESTDB2file=d:datanewsmgnt.dmptables=(inner_notify,notify_staff_relat)4将数据库中的表table1中的字段filed1以00打头的数据导出expsystem/manager@TESTfile=d:daochu.dmptables=(table1)query=wherefiled1like'00%'上面是常用的导出