oracle EXP导入导出表
- 格式:doc
- 大小:30.50 KB
- 文档页数:2
使⽤imp和exp命令对Oracle数据库进⾏导⼊导出操作详解这⾥导⼊导出路径都在D盘下,默认⽂件名为:example.dmpexp⽅式导出数据相关参数项如下:关键字说明默认USERID⽤户名/⼝令FULL导出整个⽂件(N)BUFFER数据缓冲区的⼤⼩OWNER导出指定的所有者⽤户名列表FILE输出⽂件(EXPDAT.DMP)TABLES导出指定的表名列表COMPRESS是否压缩导出的⽂件(Y)RECORDLENGTH IO 记录的长度GRANTS导出权限(Y)INCTYPE增量导出类型INDEXES导出索引(Y)RECORD跟踪增量导出(Y)ROWS导出数据⾏(Y)PARFILE参数⽂件名CONSTRAINTS导出限制(Y)CONSISTENT交叉表⼀致性LOG屏幕输出的⽇志⽂件STATISTICS分析对象(ESTIMATE)DIRECT直接路径(N)TRIGGERS导出触发器(Y)FEEDBACK显⽰每 x ⾏ (0) 的进度FILESIZE各转储⽂件的最⼤尺⼨QUERY选定导出表⼦集的⼦句TRANSPORT_TABLESPACE导出可传输的表空间元数据(N)TABLESPACES导出指定的表空间列表1.完全导出(选项都为默认配置)例⼦:导出mydb数据库system⽤户,密码为123456的所有数据到D:\example.dmp⽂件中expsystem/**************.12.32/mydbfile=D:\example.dmp2.只导出表结构例⼦:导出mydb数据库system⽤户,密码为123456的所有表结构到D:\example.dmp⽂件中expsystem/**************.12.32/mydbfile=D:\example.dmprows=n3.将指定⽤户下的表导出例⼦:导出mydb数据库system和sys⽤户的所有表数据到D:\example.dmp⽂件中expsystem/**************.12.32/mydbfile=D:\example.dmpowner=(system,sys)4.将指定的表导出例⼦:导出mydb数据库system⽤户下的table1和table2表数据到D:\example.dmp⽂件中expsystem/**************.12.32/mydbfile=D:\example.dmptables=(table1,table2)imp⽅式导⼊数据相关参数项如下:关键字说明默认USERID⽤户名/⼝令FULL导⼊整个⽂件(N)BUFFER数据缓冲区⼤⼩FROMUSER所有⼈⽤户名列表FILE输⼊⽂件(EXPDAT.DMP)TOUSER⽤户名列表SHOW只列出⽂件内容(N)TABLES表名列表IGNORE忽略创建错误(N)RECORDLENGTH IO记录的长度GRANTS导⼊权限(Y)INCTYPE增量导⼊类型INDEXES导⼊索引(Y)COMMIT提交数组插⼊(N)ROWS导⼊数据⾏(Y)PARFILE参数⽂件名LOG屏幕输出的⽇志⽂件CONSTRAINTS导⼊限制(Y)DESTROY覆盖表空间数据⽂件(N)INDEXFILE将表/索引信息写⼊指定的⽂件SKIP_UNUSABLE_INDEXES跳过不可⽤索引的维护(N)FEEDBACK每 x ⾏显⽰进度TOID_NOVALIDATE跳过指定类型 ID 的验证FILESIZE每个转储⽂件的最⼤⼤⼩STATISTICS始终导⼊预计算的统计信息RESUMABLE在遇到有关空间的错误时挂起RESUMABLE_NAME⽤来标识可恢复语句的⽂本字符串RESUMABLE_TIMEOUT RESUMABLE 的等待时间COMPILE编译过程, 程序包和函数(Y)STREAMS_CONFIGURATION导⼊ Streams 的⼀般元数据(Y)STREAMS_INSTANITATION导⼊ Streams 的实例化元数据(N)TRANSPORT_TABLESPACE导⼊可传输的表空间元数据TABLESPACES将要传输到数据库的表空间DATAFILES将要传输到数据库的数据⽂件TTS_OWNERS拥有可传输表空间集中数据的⽤户1.导⼊⼀个完整的库例⼦:将D:\example.dmp⽂件中的库导⼊到mydb下的system⽤户中impsystem/**************.12.32/mydbfile=D:\example.dmpfull=yignore=y到此这篇关于使⽤imp和exp命令对Oracle数据库进⾏导⼊导出操作详解的⽂章就介绍到这了,更多相关Oracle数据库exp和imp 导⼊导出内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
Oracle中的导入导出表及数据Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。
exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。
利用这个功能可以构建两个相同的数据库。
1.用plsql实现1.1使用plsql连接oracle,点击工具——导出表1.2选择要导出的表1.3可执行文件在C:\oracle\product\10.2.0\db_1\bin 目录下导出是exp 导入是imp导出的为dmp文件1.4导入文件:点击工具——导入表在导入文件中选择要导入的表确认后点击导入2.用dos命令实现2.1Windows——R——cmd2.2输入dos命令:exp youngtop_us/ail@192.168.0.46/orcl10g file=F:/fileSys.dmp log=F:/fileSys.logstatistics=none tables=file_attach,file_tree,file_permissionps:exp user/password@主机地址file=存储位置log=存储位置statistics=none tables=tablename3.将数据导出到excel表中及将excel表数据导入数据库3.1选中要导出数据的表右键——查询数据3.2选中表中的数据邮件——复制到excel3.3在excel中保存3.4可以不按照数据库中的字段存放顺序,编辑形成Excel表中的数据3.5选中要导入的数据后另存一份txt文档3.6在plsql中点击工具——文本导入器进入到文本导入器的页面后,先点击“来自文本文件的数据”选项卡,然后点击打开按钮,选择数据录入.txt文件3.7在配置中进行配置如果不将标题名勾选上,则会导致字段名也当做记录被导入到数据库中,影响正确录入3.8点击导入按钮将数据导入oracle数据库中。
查看具体的命令模式$ exp help=y$ imp help=y一、导出工具exp1 它是操作系统下一个可执行的文件存放目录/ORACLE_HOME/binexp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移它有三种模式:a. 用户模式:导出用户所有对象以及对象中的数据;b. 表模式:导出用户所有表或者指定的表;c. 整个数据库:导出数据库中所有对象。
二、导入工具imp它是操作系统下一个可执行的文件存放目录/ORACLE_HOME/binimp导入工具将EXP形成的二进制系统文件导入到数据库中.它有三种模式:a. 用户模式:导出用户所有对象以及对象中的数据;b. 表模式:导出用户所有表或者指定的表;c. 整个数据库:导出数据库中所有对象。
只有拥有IMP_FULL_DATABASE和DBA权限的用户才能做整个数据库导入导入导出(imp/exp) 某个用户表下面的所有数据注意:必须是用oracle用户登录1、导出某个用户的所有对象exp testa/testa@orcl owner= testa file=/home/oracle/testa.dmp 如果有多个用户的话,可以用逗号隔开如exp testa/testa@orcl owner=(testa,testb)file=/home/oracle/testa.dmp2、导入某个用户的数据imp testa/testa@orcl fromuser =testa touser =testafile=/home/oracle/testa.dmp注意:注:如果在导入时有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上ignore=y 就可以了。
要保证导入的用户的表空间的名称和导出的表空间名称是一样的导入前最好保证要导入用户里面没有重复的对象和数据,要不导入会不成功。
3、导出和导入某个用户下的某张表exp test/test@orcl file=/home/oracle/Desktop/t_area.dmplog=t_area.log tables=t_areaExport: Release 11.2.0.1.0 - Production on Mon May 7 15:03:47 2012Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsExport done in ZHS16GBK character set and AL16UTF16 NCHAR character setserver uses AL32UTF8 character set (possible charset conversion) About to export specified tables via Conventional Path .... . exporting table T_AREA 31 rows exportedEXP-00091: Exporting questionable statistics.Export terminated successfully with warnings.会出现这个提示是因为终端的字符集和数据库的字符集不一样,解决方法是将终端的字符集设置的和数据库的一样,这样之后,有关数据库的提示从英文也变成中文解决步骤:oracle身份登陆sqlplus / as sysdbaSQL> select PROPERTY_VALUE from database_properties where property_name like '%SET%';PROPERTY_VALUE--------------------------------------------------------------------------------AL32UTF8AL16UTF16然后退出sqlplus,回到linux终端echo $NLS_LANGAMERICAN_AMERICA.ZHS16GBKexport NLS_LANG="Simplified Chinese_china.AL32UTF8"exp test/test@orcl file=t_area.dmp log=t_area.log tables=t_area Export: Release 11.2.0.1.0 - Production on 星期一 5月 7 15:04:44 2012Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options已导出 AL32UTF8 字符集和 AL16UTF16 NCHAR 字符集即将导出指定的表通过常规路径.... . 正在导出表 T_AREA导出了 31 行成功终止导出, 没有出现警告。
exp语句导出表结构建表语句
EXP是Oracle数据库中的一个工具,用于数据的导入和导出操作。
通过EXP语句,我们可以将指定的表或视图的数据和结构导出为一
个.dmp文件,然后可以使用IMP或IMPDP命令将该.dmp文件导入到另
一个数据库中。
下面是一个示例的EXP语句,用于导出一个表的结构和数据:
EXP username/password@database FILE=export.dmp
TABLES=table_name
上述语句中,username是数据库用户的名称,password是用户的
密码,database是数据库的连接信息,export.dmp是导出的文件名,table_name是要导出的表的名称。
需要注意的是,如果只想导出表结构而不导出数据,可以加上参
数ROWS=N,示例:
EXP username/password@database FILE=export.dmp
TABLES=table_name ROWS=N
在实际使用中,我们还可以通过EXP语句的其他参数来控制导出的内容,例如:
- QUERY:通过指定查询条件,只导出满足条件的数据;
- WHERE:通过指定WHERE子句,只导出满足条件的数据;
- INDEXES、GRANTS、CONSTR。
Oracleexp及imp导出导入工具的使用(全)ORACLE EXP/IMP的使用详解1导入/导出是ORACLE幸存的最古老的两个命令行工具,其实我从来不认为Exp/Imp是一种好的备份方式,正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理冲突等中有不小的功劳。
当然,我们也可以把它作为小型数据库的物理备份后的一个逻辑辅助备份,也是不错的建议。
对于越来越大的数据库,特别是TB级数据库和越来越多数据仓库的出现, EXP/IMP越来越力不从心了,这个时候,数据库的备份都转向了RMAN和第三方工具。
下面说明一下EXP/IMP的使用。
如何使exp的帮助以不同的字符集显示:set nls_lang=simplified chinese_china.zhs16gbk,通过设置环境变量,可以让exp的帮助以中文显示,如果set nls_lang=American_america.字符集,那么帮助就是英文的了EXP的所有参数(括号中为参数的默认值:USERID 用户名/口令如:USERID=duanl/duanlFULL 导出整个数据库(NBUFFER 数据缓冲区的大小OWNER 所有者用户名列表,你希望导出哪个用户的对象,就用owner=username FILE 输出文件(EXPDAT.DMPTABLES 表名列表,指定导出的table名称,如:TABLES=table1,table2COMPRESS 导入一个extent (YRECORDLENGTH IO 记录的长度GRANTS 导出权限(YINCTYPE 增量导出类型INDEXES 导出索引(YRECORD 跟踪增量导出(YROWS 导出数据行(YPARFILE 参数文件名,如果你exp的参数很多,可以存成参数文件. CONSTRAINTS 导出约束(YCONSISTENT 交叉表一致性LOG 屏幕输出的日志文件STATISTICS 分析对象(ESTIMATEDIRECT 直接路径(NTRIGGERS 导出触发器(YFEEDBACK 显示每x 行(0 的进度FILESIZE 各转储文件的最大尺寸QUERY 选定导出表子集的子句下列关键字仅用于可传输的表空间TRANSPORT_TABLESPACE 导出可传输的表空间元数据(N TABLESPACES 将传输的表空间列表IMP的所有参数(括号中为参数的默认值:USERID 用户名/口令FULL 导入整个文件(NBUFFER 数据缓冲区大小FROMUSER 所有人用户名列表FILE 输入文件(EXPDAT.DMPTOUSER 用户名列表SHOW 只列出文件内容(NTABLES 表名列表IGNORE 忽略创建错误(N RECORDLENGTH IO 记录的长度GRANTS 导入权限(YINCTYPE 增量导入类型INDEXES 导入索引(YCOMMIT 提交数组插入(NROWS 导入数据行(YPARFILE 参数文件名LOG 屏幕输出的日志文件CONSTRAINTS 导入限制(Y DESTROY 覆盖表空间数据文件(N INDEXFILE 将表/索引信息写入指定的文件SKIP_UNUSABLE_INDEXES 跳过不可用索引的维护(NANALYZE 执行转储文件中的ANALYZE 语句(YFEEDBACK 显示每x 行(0 的进度TOID_NOVALIDATE 跳过指定类型id 的校验FILESIZE 各转储文件的最大尺寸RECALCULATE_STATISTICS 重新计算统计值(N下列关键字仅用于可传输的表空间TRANSPORT_TABLESPACE 导入可传输的表空间元数据(NTABLESPACES 将要传输到数据库的表空间DATAFILES 将要传输到数据库的数据文件TTS_OWNERS 拥有可传输表空间集中数据的用户关于增量参数的说明:exp/imp的增量并不是真正意义上的增量,所以最好不要使用。
C:\Documents and Settings\Administrator>expExport: Release 10.1.0.2.0 - Production on 星期一10月11 21:22:09 2010 Copyright (c) 1982, 2004, Oracle. All rights reserved.用户名: scott口令:tiger连接到: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - ProductionWith the Partitioning, OLAP and Data Mining options输入数组提取缓冲区大小: 4096 >导出文件: EXPDA T.DMP > e:\dump\dept.dmp(2)U(用户), 或(3)T(表): (2)U > t导出表数据(yes/no): yes > yes压缩区(yes/no): yes > yes已导出ZHS16GBK 字符集和AL16UTF16 NCHAR 字符集即将导出指定的表通过常规路径...要导出的表(T) 或分区(T: P): (按RETURN 退出) > dept. . 正在导出表DEPT导出了 4 行要导出的表(T) 或分区(T: P): (按RETURN 退出) > emp. . 正在导出表EMP导出了14 行要导出的表(T) 或分区(T: P): (按RETURN 退出) >导出成功终止, 但出现警告。
C:\Documents and Settings\Administrator>C:\Documents and Settings\Administrator>impImport: Release 10.1.0.2.0 - Production on 星期一10月11 21:31:24 2010 Copyright (c) 1982, 2004, Oracle. All rights reserved.用户名: scott口令:连接到: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production With the Partitioning, OLAP and Data Mining options导入文件: EXPDA T.DMP> e:\dump\dept.dmp输入插入缓冲区大小(最小为8192) 30720>经由常规路径由EXPORT:V10.01.00 创建的导出文件已经完成ZHS16GBK 字符集和AL16UTF16 NCHAR 字符集中的导入只列出导入文件的内容(yes/no): no >由于对象已存在, 忽略创建错误(yes/no): no > yes导入权限(yes/no): yes >导入表数据(yes/no): yes >导入整个导出文件(yes/no): no > yes. 正在将SCOTT 的对象导入到SCOTT. . 正在导入表"DEPT"。
使⽤exp和imp导⼊导出指定表从源数据库导出:这种⽅式,包含创建表,插⼊数据,所以,⽬标应没有这个表exp user1/pwd@server1 file=c:\temp\exp.dmp tables=(table1, table2)例如:exp platadmin/plat_8admin@hkserver32 file=d:\hkdata.dmp tables=(REPORT_DRIVERATTENDANCE_day,REPORT_DRIVERATTENDANCE_MONTH)我试了⼀下,在本地不能导出,还是得在服务器上导,在服务器上导很快,⼏⼗万条数据的表,⼀两秒钟就导出完了导⼊到⽬标数据库:imp user2/pwd@server2 file=c:\temp\exp.dmp tables=(table1, table2)例如:导⼊也很快,⼀两秒钟imp platadmin/plat_8admin@orclgis file=d:\hkdata.dmp tables=(REPORT_DRIVERATTENDANCE_day,REPORT_DRIVERATTENDANCE_MONTH)1Oracle就是有这个好处,可以直接将远程的数据导出到本地;或者将本地的数据⽂件导⼊到远程数据库。
⽽SQL SERVER的备份、还原⽂件,⼀定是放在远程服务器本机的。
补充⼀下,如果有许多表,那么以上语句可能会换⾏。
但以上命令是在DOS命令窗⼝执⾏的,命令⾏⽅式,容不得换⾏。
那咋办呢?我的笨办法是将语句拷贝到WORD⽂档,然后将回车换⾏符替换掉。
替换的⽅法:在替换窗⼝,查找内容输⼊ ^p(注意是⼩写),替换内容为空,然后替换即可。
=====================================以 sysdba ⾝份运⾏,导出导⼊指定⽤户所属表:exp ‘sys/123456@Service1 as sysdba’ file=c:\temp\exp.dmp tables=(sde.ISLAND)imp ‘sys/888888@Service2 ’ file=c:\temp\exp.dmp fromuser=sde tables=(ISLAND)=================================================如果表空间的名字不⼀样,会报 ORA-00959 错误,咋办?1、先从源数据库,导出建表脚本(DDL)2、在新库新表空间⾥运⾏这些DDL3、imp,加上fromuser,touser,ignore=Y选项imp 'sys/lt@HPM as sysdba' file=c:\temp\base.dmp fromuser=hydg touser=hpm tables=(org_user,SYS_ONLINE,sys_userRoles,Org_Role,Org_Group,sys_Event) ignore=Y1有关ORA-00959 错误的应对之道,参考⽂章:。
1.1 EXP AND IMP导入导出的模式a表模式的导入导出b用户模式的导入导出c全库模式的导入导出导出表模式exp system/jaguar@cfp00_cpzb2003 tables=(cp.misywt14,cp.misywt18) file=d:\t8.dmplog=d:\t14t18_exp.log feedback=10000 compress=n用户模式exp system/jaguar@cfp00_cpzb2003 owner=cp file=e:\cp.dmp log=e:\cp_exp.logfeedback=10000 compress=n全库模式exp system/jaguar@bkup full=y filesize=2000M file=(cpzb01.dmp,cpzb02.dmp)log=cpzb_exp.log feedback=10000 compress=n使用参数文件导出(需要在当前路径下执行)exp system/manager@bgd-11_yang1 parfile=t09_exp.part09_exp.par文件内容tables = (test1.misywt09) file=e:\yang\t09.dmp log=e:\yang\t09_exp.log feedback=10000 compress=n快速导出使用参数direct=y recordlength=65535exp system/jaguar@cfp00_cpzb2003 owner=cp file=e:\cp.dmp log=e:\cp_exp.log direct=y recordlength=65535 feedback=10000 compress=n有条件的导出,windowsexp system/ckdb5@ckdb5 tables = (cp962008.misywt40_1) file=t40_96.dmp log=t40_96_exp.log feedback=10000 QUERY='where substr(ckhwh,1,1)="5"'导入表模式imp system/jaguar@cfp99_cpzb fromuser=cp touser=cp tables= (misywt14,misywt18)file=e:\t14t18.dmp log=e:\t14t18_imp.log ignore=y buffer=5120000 commit=yfeedback=10000用户模式imp system/jaguar@cfp99_cpzb fromuser=cp touser=cp file=d:\cp.dmp log=d:\cp_imp.log ignore=y buffer=5120000 commit=y feedback=10000全库模式imp system/jaguar@cfp99_cpzb full=y file=d:\cp.dmp log=d:\cp_imp.log ignore=ybuffer=5120000 commit=y feedback=10000导入大于2G的文件imp system/jaguar@cfp10_cpzbbak filesize=2000M buffer=81920 commyit=y ignore=yfile=(cpzb01.dmp,cpzb02.dmp,cpzb03.dmp,cpzb04.dmp) log=cpzb_imp.log feedback=10000使用参数文件导入(需要在当前路径下执行)imp system/manager@bgd-11_yang1 parfile=t09_imp.part09_imp.par 文件的内容fromuser=test1 touser=test1 tables=(misywt09) file=e:\yang\t09.dmp log=e:\yang\t09_imp.log ignore=y buffer=5120000 commit=y feedback=10000imp步骤说明(1) create table (2) insert data (3) create index (4) create triggers,constraints导出导入常见问题及解决方法1) unix上导出导入,使用多个用户或多个文件时不使用()2) ORACLE不同版本之间的导出导入oracle8.0.4 netwareoracle8.1.5 win2000oracle8.1.7 unix ware 7.1.18.0.4――>8.1.7使用8.0.4从自己导出,使用8.1.5导入8.1.78.1.7――>8.0.4使用8.1.5从8.1.7 导出,使用8.1.5导入8.0.48.1.5――>8.1.7使用8.1.5从自己导出,使用8.1.5导入8.1.78.1.7――>8.1.5使用8.1.7从自己导出,使用8.1.7导入8.1.5oracle8-oracle10之间导入导出的关系1个表的测试oracle8->oracle10test 源数据库目的数据库导出的oracle版本导入的oracle版本文件大小时间结果备注test18 10 8 8 成功有垃圾表BIN$bEheaq87S/q9CiHem/Ty6Q==$0test28 10 8 10 成功test38 10 10 8 失败10无法连接8test48 10 10 10 失败10无法连接8 结论:oracle8->oracle10 导出使用8,导入使用10oracle10->oracle8test 源数据库目的数据库导出的oracle版本导入的oracle版本文件大小时间结果备注test510 8 8 8 成功test610 8 8 10 失败10无法连接8test710 8 10 8 失败8不能读取10得导出文件test810 8 10 10 失败10无法连接8 结论:oracle10->oracle8 导出使用8,导入使用8使用oracle8导出oracle10时,出现错误EXP-00003: 未找到段(10,585868) 的存储定义原因:不能用oracle8导出oracle10。
oracle使⽤expdp、impdp和exp、imp导⼊导出表及表结构使⽤expdp、impdp和exp、imp时应该注重的事项:1、exp和imp是客户端⼯具程序,它们既可以在客户端使⽤,也可以在服务端使⽤。
2、expdp和impdp是服务端的⼯具程序,他们只能在oracle服务端使⽤,不能在客户端使⽤。
3、imp只适⽤于exp导出的⽂件,不适⽤于expdp导出⽂件;impdp只适⽤于expdp导出的⽂件,⽽不适⽤于exp导出⽂件。
4、对于10g以上的服务器,使⽤exp通常不能导出0⾏数据的空表,⽽此时必须使⽤expdp导出。
exp、imp导⼊导出sqlplus 进⼊数据库中导出直接在命令⾏下写命令1.导出⾃⼰的表exp userid=scott/tiger@myoral tables=(emp,dept) file=/opt/e1.dmp2.导出其它⽅案的表如果⽤户要导出其它⽅案的表,则需要dba的权限或是exp_full_database的权限,⽐如system就可以导出scott的表exp userid=system/manager@myoral tables=(scott.emp) file=d:\e2.emp3. 导出表的结构exp userid=scott/tiger@accp tables=(emp) file=/opt/e3.dmp rows=n4. 使⽤直接导出⽅式exp userid=scott/tiger@accp tables=(emp) file=/opt/e4.dmp direct=y这种⽅式⽐默认的常规⽅式速度要快,当数据量⼤时,可以考虑使⽤这样的⽅法。
这时需要数据库的字符集要与客户端字符集完全⼀致,否则会报错导出⽅案导出⽅案是指使⽤export⼯具导出⼀个⽅案或是多个⽅案中的所有对象(表,索引,约束...)和数据。
并存放到⽂件中1. 导出⾃⼰的⽅案exp userid=scott/tiger@myorcl owner=scott file=/opt/scott.dmp2. 导出其它⽅案如果⽤户要导出其它⽅案,则需要dba的权限或是exp_full_database的权限,⽐如system⽤户可以导出任何⽅案exp userid=system/manager@myorcl owner=(system,scott) file=/opt/system.dmp导出数据库导出数据库是指利⽤export导出所有数据库中的对象及数据,要求该⽤户具有dba的权限或者是exp_full_database权限增量备份(好处是第⼀次备份后,第⼆次备份就快很多了)exp userid=system/manager@myorcl full=y inctype=complete file=/opt/all.dmp导⼊1. 导⼊⾃⼰的表imp userid=scott/tiger@myorcl tables=(emp) file=/opt/xx.dmp2. 导⼊表到其它⽤户要求该⽤户具有dba的权限imp_full_database imp userid=system/tiger@myorcl tables=(emp) file=/opt/xx.dmp touser=scott3. 导⼊表的结构,只导⼊表的结构⽽不导⼊数据imp userid=scott/tiger@myorcl tables=(emp) file=/opt/xx.dmp rows=n4. 导⼊数据如果对象(如⽐表)已经存在可以只导⼊表的数据imp userid=scott/tiger@myorcl tables=(emp) file=/opt/xx.dmp ignore=y导⼊⽅案导⼊⽅案是指使⽤import⼯具将⽂件中的对象和数据导⼊到⼀个或是多个⽅案中。
oracle导⼊导出参数,ORACLE数据导⼊导出⾥的EXPIMP命令参数1、EXP:1、完全:EXP SYSTEM/MANAGER BUFFER=64000 FILE=C:/FULL.DMP FULL=Y如果要执⾏完全导出,必须具有特殊的权限2、⽤户模式:EXP SONIC/SONIC BUFFER=64000 FILE=C:/SONIC.DMP OWNER=SONIC这样⽤户SONIC的所有对象被输出到⽂件中。
3、表模式:EXP SONIC/SONIC BUFFER=64000 FILE=C:/SONIC.DMP OWNER=SONIC TABLES=(SONIC)这样⽤户SONIC的表SONIC就被导出exp参数:关键字 说明(默认)----------------------------------------------USERID ⽤户名/⼝令FULL 导出整个⽂件 (N)BUFFER 数据缓冲区的⼤⼩OWNER 所有者⽤户名列表FILE 输出⽂件 (EXPDAT.DMP)TABLES 表名列表COMPRESS 导⼊⼀个范围 (Y)RECORDLENGTH IO 记录的长度GRANTS 导出权限 (Y)INCTYPE 增量导出类型INDEXES 导出索引 (Y)RECORD 跟踪增量导出 (Y)ROWS 导出数据⾏ (Y)PARFILE 参数⽂件名CONSTRAINTS 导出限制 (Y)CONSISTENT 交叉表⼀致性LOG 屏幕输出的⽇志⽂件STATISTICS 分析对象 (ESTIMATE)DIRECT 直接路径 (N)TRIGGERS 导出触发器 (Y)FEEDBACK 显⽰每 x ⾏ (0) 的进度FILESIZE 各转储⽂件的最⼤尺⼨QUERY 选定导出表⼦集的⼦句2、IMP:具有三种模式(完全、⽤户、表)1、完全:IMP SYSTEM/MANAGER BUFFER=64000 FILE=C:/FULL.DMP FULL=Y2、⽤户模式:IMP SONIC/SONIC BUFFER=64000 FILE=C:/SONIC.DMP FROMUSER=SONIC TOUSER=SONIC 这样⽤户SONIC的所有对象被导⼊到⽂件中。
oracleexp和imp⼯作中常⽤的导⼊导出语句本⽂整理了oracle exp和imp在⼯作中实⽤的例⼦。
1.单表导出,导⼊(1) 导出exp scott/tiger rows=y indexes=n compress=n buffer=20480000 feedback=100000 file=/tmp/emp1.dmp log=/tmp/emp1.log tables=emp1 (注:1.默认的 EXP 时, compress = Y,也就是把所有的数据压缩在⼀个块上也导⼊时 , 如果不存在连续⼀个⼤数据块 , 则会导⼊失败 . 导出80M 以上的⼤表时 , 记得 compress= N, 则不会引起这种错误则不会引起这种错误。
2. 参数 BUFFER定义了每⼀次读取导出⽂件的数据量,设越⼤就定减少 export 进程读取数据的次,从⽽提⾼导⼊效率。
进程读取数据的次,从⽽提⾼导⼊效率。
BUFFER 的⼤⼩取决于的系统的应⽤、数据库规模,通常设为百兆⾜够了。
通常设置为(20-100M),buffer 参数对直接路径导出direct=y没有影响)3.feedback 意思是多少⾏返回⼀次可以根据实际情况修改4.(ROWS=Y导出数据⾏, ROWS=N 不导出数据⾏5. indexes=n 不导出索引,因为索引可以直接重建,在恢复数据的过程中,若在恢复数据的过程中,若 indexes=n ,则表上的索引不会被恢复,但是主键对应的唯⼀索引将⽆条件恢复,这是为了保证数据完整性)(2)导⼊imp scott/tiger fromuser=scott touser=scott rows=y indexes=n commit=y buffer=51200000 feedback=100000 ignore=n file=/tmp/emp1.dmp log=/tmp/emp1.log(注:1.ignore 标明在执⾏‘CREATE’命令时,是否忽略遇到的错误。
Oracle中用expimp命令快速导入导出数据【用 exp 数据导出】:1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中exp system/manager@TEST file=d:\daochu.dmp full=y2 将数据库中system用户与sys用户的表导出exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)3 将数据库中的表table1 、table2导出exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)4 将数据库中的表table1中的字段filed1以”00″打头的数据导出exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\” where filed1like '00%'\”上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。
不过在上面命令后面加上compress=y 就可以了。
【用 imp 数据导入】:1 将D:\daochu.dmp 中的数据导入 TEST数据库中。
imp system/manager@TEST file=d:\daochu.dmp上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上 ignore=y 就可以了。
2 将d:\daochu.dmp中的表table1 导入impsystem/manager@TEST file=d:\daochu.dmp tables=(table1)基本上上面的导入导出够用了。
不少情况我是将表彻底删除,然后导入。
功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份。
EXP-IMP用户对象导出导入方法前言:最近,客户方要求每天定时导出数据库某个用户对象数据,方便出错时用于数据恢复或用于调用数据。
由于客户生产环境的数据库为非归档模式,数据量比较小,最后采用古老的exp/imp导出导入方法。
下面主要讲解一下EXP/IMP用户对象导出导入的使用方法。
正文:操作系统windows server 2003 oracle10gEXP用户对象导出操作:在oracle客户端配置tnsnames.oracanway =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.2.43)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = ORCL)))使用EXP用户对象导出的方法比较简单:打开cmd窗口,执行以下命令:exp system/canway@canway owner=用户名 file=*.dmp log=*.log compress=y direct=n rows=y#标注:owner:需要导出的用户名 compress:导入一个extent (Y) DIRECT:直接路径 (N) ROWS:导出数据行 (Y)IMP用户对象导入操作:由于imp导入用户对象数据,不会进行覆盖,故导入之前需要做以下操作:1.查看用户对应默认表空间:select username,DEFAULT_TABLESPACE from dba_users;2.删除用户并删除此用户名下的所有表和视图(不删除用户所在的表空间):drop user username cascade;(若该用户正在运行,需要KILL掉会话select sid,serial# from v$session where username='user_name';alter system kill session 'sid,serial'; )3.重建之前的用户和密码:create user 用户名 identified by 密码 default tablespace 表空间名;(查找用户对应的默认表空间:select username,DEFAULT_TABLESPACE from dba_users;)4.赋予用户适当的权力grant connect,resource,dba to 用户名;5.对用户对象数据导入:运行在命令行的窗口下imp system/canway@canway file=I:\backup\*.dmp log=I:\backup\*.log fromuser=导出的用户名touser=导入的用户名;#注释:file=导出文件存放的直接路径和名称.dmp log=导入过程中产生的日志追踪log Fromuser:导出的文件所有者touser:即将需要导入到哪个用户名。
Oracle数据库imp/exp导入导出命令(备份与恢复)Toad 一个很好的oralce数据库操作与管理工具,使用它可以很方便地导入导出数据表,用户以及整个数据库。
今天在这里主要讲一下用命令行来操作oracle数据导入和导出:备份数据1、获取帮助:exp help=y2. 导出一个完整数据库exp user/pwd@instance file=path full=y示例:exp system/system@xc file = c:/hehe full =yimp tax/test@tax file=d:/dbbak.dmp full=y3 、导出一个或一组指定用户所属的全部表、索引和其他对象exp system/manager file=seapark log=seapark owner=seaparkexp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold)示例:exp system/system@xc file=c:/hehe owner=uep4、导出一个或多个指定表exp system/manager file=tank log=tank tables=(seapark.tank,amy.artist)示例:exp system/system@xc file=c:/heh tables=(ueppm.ne_table)恢复数据1. 获取帮助imp help=y2. 导入一个完整数据库imp system/manager file=bible_db log=dible_db full=y ignore=y3. 导入一个或一组指定用户所属的全部表、索引和其他对象imp system/manager file=seapark log=seapark fromuser=seaparkimp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)4. 将一个用户所属的数据导入另一个用户imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copyimp system/manager file=tank log=tank fromuser=(seapark,amy) touser=(seapark1, amy1)5. 导入一个表imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)****************************************************利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回Oracle 数据库中去。
oracle19c之导⼊、导出及脚本 记录⼀下oracle两种常⽤的导⼊导出⽅式:exp、imp;spool、SQL*Loader及其脚本。
⼀、exp与imp导⼊导出 1、exp导出操作exp c##sl/123456 buffer=64000 file=./full.sql full=y --导出整个数据库exp c##sl/123456 buffer=64000 file=./sl.sql owner=c##sl --导出⽤户c##sl下的对象exp c##sl/123456 buffer=64000 file=./book.sql tables=book --导出book表exp c##sl/123456 buffer=64000 file=./book.sql tables=book,book2; --导出book、book2表 2、imp导⼊操作exp c##sl/123456 buffer=64000 file=./book.sql tables=bookdrop table book;imp c##sl/123456 buffer=64000 file=./book.sql tables=book --需要先删除表,再导⼊,否则报错exp c##sl/123456 buffer=64000 file=./book.sql tables=bookimp c##sl/123456 buffer=64000 ignore=y file=./book.sql tables=book --只会导⼊主键不冲突的数据,冲突的忽略exp c##sl/123456 buffer=64000 file=./sl.sql owner=c##slimp c##sl/123456 buffer=64000 ignore=y file=./sl.sql full=y --导⼊sl.sql中的全部⽂件imp c##sl/123456 buffer=64000 ignore=y file=./sl.sql tables=book,book2 --导⼊sl.sql中的表book、与book2 说明:tables指定导⼊或导出的表;full=y表⽰导⼊或导出全部;ignore=y表⽰跳过主键冲突执⾏ ⼆、spool、SQL*Loader导⼊导出 准备表与数据CREATE TABLE book(id varchar2(10) NOT NULL,name varchar2(50) DEFAULT NULL,author varchar2(20) DEFAULT NULL,price decimal(10,0) DEFAULT NULL,update_time date DEFAULT NULL,create_time date DEFAULT NULL,is_deleted varchar2(1) DEFAULT NULL,PRIMARY KEY (id));insert into book values ('1','c##','sl',23.4,to_date('2011-11-11 11:11:11','YYYY-MM-DD HH24:MI:SS'),to_date('2011-11-11 11:11:14','YYYY-MM-DD HH24:MI:SS'),1);insert into book values ('2','c##','sl',23.4,to_date('2011-11-11 11:11:11','YYYY-MM-DD HH24:MI:SS'),to_date('2011-11-11 11:11:14','YYYY-MM-DD HH24:MI:SS'),1);insert into book values ('3','c##','sl',23.4,to_date('2011-11-11 11:11:11','YYYY-MM-DD HH24:MI:SS'),to_date('2011-11-11 11:11:14','YYYY-MM-DD HH24:MI:SS'),1); 1、spool导出操作 创建sql⽂件book_spoolout.sqlset echo offset heading offset feedback offset pagesize 0set linesize 1000spool book.datselect id||','||name||','||author||','||price||','||to_char(update_time,'YYYY-MM-DD hh24:mi:ss')||','||to_char(create_time,'YYYY-MM-DD hh24:mi:ss')||','||is_deleted from book;spool off 登录sqlplus,执⾏@导出⽂件[root@localhost tmp]# sqlplus c##sl/123456SQL> @book_spoolout.sql; 导出数据⽂件book.dat如下:1,c##,sl,23,2011-11-11 11:11:11,2011-11-11 11:11:14,12,c##,sl,23,2011-11-11 11:11:11,2011-11-11 11:11:14,13,c##,sl,23,2011-11-11 11:11:11,2011-11-11 11:11:14,1 说明: b、这⾥登录数据库⽬录与sql⽂件、导出⽂件⽬录⼀致; c、如果导出⽬录没有写权限,会报错“⽆法创建 SPOOL ⽂件 "book.dat"当前未假脱机”,注意赋权; d、要把控制⽂件写⼊⽂件中保存,如果直接复制到sqlplus中执⾏,导出的⽂件中⾸尾⾏含有其他命令或sql语句; 2、SQL*Loader导⼊操作 创建控制⽂件book.ctlload datainfile book.datinto table booktruncatefields terminated by ","(ID,NAME,AUTHOR,PRICE,UPDATE_TIME DATE "YYYY-MM-DD HH24:MI:SS",CREATE_TIME DATE "YYYY-MM-DD HH24:MI:SS",IS_DELETED) 执⾏导⼊命令,将上⾯的book.dat导⼊数据库sqlldr userid=c##sl/123456 control=book.ctl data=book.dat 注意: a、这⾥的控制⽂件与数据⽂件在同⼀⽬录下 b、truncate是删除原表数据,还有insert、append、replace等 c、fields terminated by是字段分隔符 三、脚本 可以看到spool、sql loader的导⼊导出还是挺复杂的,下⾯整理出通⽤性更强的脚本 1、导出 准备表与数据CREATE TABLE music(id varchar2(10) NOT NULL,name varchar2(50) DEFAULT NULL,author varchar2(20) DEFAULT NULL,price decimal(10,2) DEFAULT NULL,update_time varchar2(19) DEFAULT NULL,create_time varchar2(19) DEFAULT NULL,is_deleted varchar2(1) DEFAULT NULL,PRIMARY KEY (id));insert into music values ('1','你好你好','sl',23.4,'2011-11-11 11:11:11','2011-11-11 11:11:14','1');insert into music values ('2','你好你好','sl',23.4,'2011-11-11 11:11:11','2011-11-11 11:11:14','1');insert into music values ('3','你好你好','sl',23.4,'2011-11-11 11:11:11','2011-11-11 11:11:14','1'); 创建脚本oddpe#!/bin/shif [ $# -lt 5 ];thenecho "param error: please reference example:"echo "oddp music ./music.dat c##sl/123456 -f'|!?|' -r'@#$'"exit 1fiTABLE=${1}DATAFILE=${2}USERPASS=${3}shiftshiftshiftwhile getopts "f:r:" argdof) FIELD=${OPTARG};;r) ROW=${OPTARG};;?) ROW=1;;esacdoneDATAPATH=`dirname ${DATAFILE}`DATANAME=`basename ${DATAFILE}`SPOOLOUTSQL=${DATAPATH}/${TABLE}_spoolout.sqlTODAY=`date '+%Y%m%d'`LOGFILE=${DATAPATH}/${TABLE}_unload_${TODAY}.logsqlplus -S ${USERPASS} <<eof >>${LOGFILE}set serveroutput on verify off trimspool on timing off feedback offset numwidth 50 pagesize 0 linesize 1000spool ${SPOOLOUTSQL}declarev_colcount number :=0;begindbms_output.put_line('select');for col in (select column_namefrom user_tab_columnswhere table_name = upper('${TABLE}')order by column_id)loopif v_colcount = 0thendbms_output.put(chr(9) || col.column_name);elsedbms_output.put_line(chr(9) || '||' || '''${FIELD}''' || '||' );dbms_output.put(chr(9) || col.column_name);end if;v_colcount :=v_colcount + 1;end loop;dbms_output.put('||' || '''${ROW}''');dbms_output.new_line;dbms_output.put_line('from ' || '${TABLE};');end;/spool offexiteofecho "`date +%T`: 开始导出数据!" 2>&1|tee -a ${LOGFILE}sqlplus -S ${USERPASS} <<eofset echo off heading on feedback off pagesize 0 linesize 1000set termout off trimspool on numwidth 24 arraysize 1000 verify off newpage 0 space 0spool ${DATAFILE}.tmp@${SPOOLOUTSQL}spool offexiteofif [ $? -ne 0 ];thenecho "`date +%T`: 导出${TABLE}失败!" 2>&1|tee -a ${LOGFILE}exit -1else#去除中间空⾏grep . ${DATAFILE}.tmp>${DATAFILE}rm -f ${DATAFILE}.tmpecho "`date +%T`: 导出${TABLE}完毕!" 2>&1|tee -a ${LOGFILE}exit 0fi 执⾏⽰例,导出music表的数据到music.dat⽂件,以|!?|分隔字段,以@#$结束⼀⾏./oddpe music /usr/local/myroom/script/tmp/music.dat c##sl/123456 -f'|!?|' -r'@#$' 2、导⼊ 创建脚本oddpi#!/bin/shif [ $# -lt 5 ];thenecho "param error: please reference example:"echo "oddpi music ./music.dat c##sl/123456 -f'|!?|' -r'@#$'"exit 1fiTABLE=${1}USERPASS=${3}shiftshiftshiftwhile getopts "f:r:" argdocase ${arg} inf) FIELD=${OPTARG};;r) ROW=${OPTARG};;?) ROW=1;;esacdoneDATAPATH=`dirname ${DATAFILE}`DATANAME=`basename ${DATAFILE}`CTLFILE=${DATAPATH}/${TABLE}.ctlTODAY=`date '+%Y%m%d'`LOGFILE=${DATAPATH}/${TABLE}_load_${TODAY}.logecho "`date +%T`: 创建控制⽂件" 2>&1|tee -a ${LOGFILE}sqlplus -S ${USERPASS} <<eof >>${LOGFILE}set serveroutput on verify off trimspool on timing off feedback offset numwidth 50spool ${CTLFILE}declarev_colcount number :=0;begindbms_output.put_line('load data');dbms_output.put_line('infile ${DATANAME} '|| '"str ''${ROW}\n''" ');dbms_output.put_line('into table '||'${TABLE}');dbms_output.put_line('truncate');dbms_output.put_line('fields terminated by '|| '''${FIELD}''');dbms_output.put_line('trailing nullcols');dbms_output.put_line('(');for col in (select column_name,casewhen data_type = 'NUMBER' then column_name || ' "nvl(rtrim(:' || column_name || '),' || '0.00' || ')"' else column_name || ' "nvl(rtrim(:' || column_name || '),' || ''' ''' || ')"'end xfrom user_tab_columnswhere table_name = upper('${TABLE}')order by column_id)loopif v_colcount = 0thendbms_output.put(chr(9) || col.x);elsedbms_output.put_line(',');dbms_output.put(chr(9) || col.x);end if;v_colcount :=v_colcount + 1;end loop;dbms_output.new_line;dbms_output.put_line(')');end;/spool offset feedback oneofecho "`date +%T`: 开始导⼊数据!" 2>&1|tee -a ${LOGFILE}sqlldr userid=${USERPASS} control=${CTLFILE} log=${LOGFILE} data=${DATAFILE} direct=trueif [ $? -ne 0 ];thenecho "`date +%T`: 导⼊${TABLE}失败!" 2>&1|tee -a ${LOGFILE}exit -1elseecho "`date +%T`: 导⼊${TABLE}完毕!" 2>&1|tee -a ${LOGFILE}exit 0fi 执⾏脚本,导⼊数据./oddpi music /usr/local/myroom/script/tmp/music.dat c##sl/123456 -f'|!?|' -r'@#$' 说明:对导⼊脚本中dbms_output.put_line('infile ${DATANAME} '|| '"str ''${ROW}\n''" ');的解析 load data的str属性表⽰数据的换⾏符,⽐如3^^你好你好^^sl^^23.4^^2011-11-11 11:11:11^^2011-11-11 11:11:14^^1!!2^^你好你好^^sl^^23.4^^2011-11-11 11:11:11^^2011-11-11 11:11:14^^1!!1^^你好你好^^sl^^23.4^^2011-11-11 11:11:11^^2011-11-11 11:11:14^^1!! a、"\n"是⾃带的换⾏符,因为数据⼿动换⾏了,所以str后⾯除了指定的换⾏符"!!"还有"\n" b、有些⽂件中⼿动的换⾏符不是"\n"⽽是"\r\n",这时对应语句改为......"str '!!\r\n'"...... c、str后⾯还可以跟X+转成raw类型的字符,下⾯的语句执⾏效果相同。
C:\Documents and Settings\Administrator>exp
Export: Release 10.1.0.2.0 - Production on 星期一10月11 21:22:09 2010 Copyright (c) 1982, 2004, Oracle. All rights reserved.
用户名: scott
口令:tiger
连接到: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
输入数组提取缓冲区大小: 4096 >
导出文件: EXPDA T.DMP > e:\dump\dept.dmp
(2)U(用户), 或(3)T(表): (2)U > t
导出表数据(yes/no): yes > yes
压缩区(yes/no): yes > yes
已导出ZHS16GBK 字符集和AL16UTF16 NCHAR 字符集
即将导出指定的表通过常规路径...
要导出的表(T) 或分区(T: P): (按RETURN 退出) > dept
. . 正在导出表DEPT导出了 4 行
要导出的表(T) 或分区(T: P): (按RETURN 退出) > emp
. . 正在导出表EMP导出了14 行
要导出的表(T) 或分区(T: P): (按RETURN 退出) >
导出成功终止, 但出现警告。
C:\Documents and Settings\Administrator>
C:\Documents and Settings\Administrator>imp
Import: Release 10.1.0.2.0 - Production on 星期一10月11 21:31:24 2010 Copyright (c) 1982, 2004, Oracle. All rights reserved.
用户名: scott
口令:
连接到: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production With the Partitioning, OLAP and Data Mining options
导入文件: EXPDA T.DMP> e:\dump\dept.dmp
输入插入缓冲区大小(最小为8192) 30720>
经由常规路径由EXPORT:V10.01.00 创建的导出文件
已经完成ZHS16GBK 字符集和AL16UTF16 NCHAR 字符集中的导入
只列出导入文件的内容(yes/no): no >
由于对象已存在, 忽略创建错误(yes/no): no > yes
导入权限(yes/no): yes >
导入表数据(yes/no): yes >
导入整个导出文件(yes/no): no > yes
. 正在将SCOTT 的对象导入到SCOTT
. . 正在导入表"DEPT"。
成功终止导入, 但出现警告。
C:\Documents and Settings\Administrator>。