导入工具imp交互式命令行方式的例子
$imp
Import:Release81600-Proctionon星期五12月717:01:082001
©Copyright1999OracleCorporationAllrightsreserved
用户名:test
口令:
连接到:Oracle8iEnterpriseEditionRelease81600-64bitProction
Withtheoption
JServerRelease81600-Proction
导入文件:expdatdmp>/tmp/mdmp
输入插入缓冲区大小(最小为8192)30720>
经由常规路径导出由EXPORT:V080106创建的文件
警告:此对象由TEST导出,而不是当前用户
已经完成ZHS16GBK字符集和ZHS16GBKNCHAR字符集中的导入
只列出导入文件的内容(yes/no):no>
由于对象已存在,忽略创建错误(yes/no):no>yes
导入权限(yes/no):yes>
导入表数据(yes/no):yes>
导入整个导出文件(yes/no):no>yes
正在将TEST的对象导入到SCOTT
正在导入表"CMAMENU"4336行被导入
成功终止导入,但出现警告。
导入工具imp非交互式命令行方式的例子
$impsystem/managerfromuser=jonestables=(ats)
$impsystem/managerfromuser=scotttables=(emp,dept)
$impsystem/managerfromuser=scotttouser=joetables=emp
$impscott/tigerfile=expdatdmpfull=y
$impscott/tigerfile=/mnt1/t1dmpshow=nbuffer=2048000ignore=ncommit=ygrants=yfull=ylog=/oracle_backup/log/imp_scottlog
$impsystem/managerparfile=paramsdat
paramsdat内容
file=dbadmpshow=nignore=ngrants=yfromuser=scotttables=(dept,emp)
导入工具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/tnsnamesora
定义的本地或者远端数据库的名称
注意事项:
UNIX:/etc/hosts要定义本地或者远端数据库服务器的主机名
win98:windowshosts和IP地址的对应关系
win2000:winntsystem32driversetchosts
导入导出与归不归档没有关系
用oracle用户命令行下输入
exp
scott/tiger
file='保存路径'
full=y
这样就可以全库导出
还有一个问题是scott用户不定要解锁,否则会无法连接数据库
解锁命令是sqlplus
下的输入alter
user
scott
account
unlock;
1、首先进入命令行,点击开始,输入cmd。
2、键盘按回车键,出现命令行窗口。
3、接着导入的命令是:imp 用户名/密码@网络服务名 file=xxxdmp full=y。
4、导出的命令是:exp 用户名/密码@网络服务名 file=xxxdmp tables=(表名)
5、就可以进行dmp数据库表结构和表数据的同时导入导出了,这样就完成了。
你可以通过查询dba_uses视图来确定有哪些用户和其默认的和临时的TABLESPACE,然后再在另一台需要导入的服务器上,建立好相关的TABLESPACE 后,再建立用户,并赋予相关权限后,进行导入。
、执行环境:可以在SQLPLUSEXE或者DOS(命令行)中执行。
2、EXPEXE与IMPEXE文件被用来执行导入导出
例子:
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochudmp中
exp system/manager@TEST file=d:\daochudmp full=y
2 将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:\daochudmp owner=(system,sys)
3 将数据库中的表table1 、table2导出
exp system/manager@TEST file=d:\daochudmp tables=(table1,table2)
那就要针对情况具体分析,一般可参考如下方法:
1 获取帮助
exp help=y
2 导出一个完整数据库
exp system/manager file=bible_db log=dible_db full=y
3 导出数据库定义而不导出数据
exp system/manager file=bible_db log=dible_db full=y rows=n
4 导出一个或一组指定用户所属的全部表、索引和其他对象
exp system/manager file=seapark log=seapark owner=seapark
exp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold)
注意:在导出用户时,尽管已经得到了这个用户的所有对象,但是还是不能得到这些对象引用的任何同义词。解决方法是用以下的SQLPlus命令创建一个脚本文件,运行这个脚本文件可以获得一个重建seapark所属对象的全部公共同义词的可执行脚本,然后在目标数据库上运行该脚本就可重建同义词了。
SET LINESIZE 132
SET PAGESIZE 0
SET TRIMSPOOL ON
SPOOL c:\seaparksyn
SELECT 'Create public synonym '||synonym_name||' for'||table_owner||''||table_name||';' FROM dba_synonyms WHERE table_owner = 'SEAPARK' AND owner = 'PUBLIC';
SPOOL OFF
5 导出一个或多个指定表
exp seapark/seapark file=tank log=tank tables=tank
exp system/manager file=tank log=tank tables=seaparktank
exp system/manager file=tank log=tank tables=(seaparktank,amyartist)
6 估计导出文件的大小
全部表总字节数:
SELECT sum(bytes) FROM dba_segments WHERE segment_type = 'TABLE';
seapark用户所属表的总字节数:
SELECT sum(bytes) FROM dba_segments WHERE owner = 'SEAPARK' AND segment_type = 'TABLE';
seapark用户下的aquatic_animal表的字节数:
SELECT sum(bytes) FROM dba_segments WHERE owner = 'SEAPARK' AND segment_type = 'TABLE' AND segment_name = 'AQUATIC_ANIMAL';
7 导出表数据的子集(oracle8i以上)
NT系统:
exp system/manager query='Where salad_type='FRUIT'' tables=amysalad_type file=fruit log=fruit
UNIX系统:
exp system/manager query=\"Where salad_type=\'FRUIT\'\" tables=amysalad_type file=fruit log=fruit
8 用多个文件分割一个导出文件
exp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4) log=paycheck, filesize=1G tables=hrpaycheck
9 使用参数文件
exp system/manager parfile=bible_tablespar
bible_tablespar参数文件:
#Export the sample tables used for the Oracle8i Database Administrator's Bible
file=bible_tables
log=bible_tables
tables=(
amyartist
amybooks
seaparkcheckup
seaparkitems
)
10 增量导出
“完全”增量导出(complete),即备份整个数据库
exp system/manager inctype=complete file=990702dmp
“增量型”增量导出(incremental),即备份上一次备份后改变的数据
exp system/manager inctype=incremental file=990702dmp
“累计型”增量导出(cumulative),即备份上一次“完全”导出之后改变的数据
exp system/manager inctype=cumulative file=990702dmp
都可以用作备份,但是exp类似冷备份, 你只能够恢复到某一点,而rman的话,需要开启归档,那样就可以进行无数据丢失的恢复;
主要是在备份数据的时间点的差别,rman的备份要比exp的备份时间点要好,exp备份只能在指定的某一时间点备份,rman备份则几乎可以恢复到出现故障的前一刻exp备份可用于不同平台的数据库上,适用于数据移植,如32位和64位;rman备份要求使用在同一平台的数据库,适用于数据的恢复,如64位的平台就得对应64位的平台;
在不开归档日志的情况下,Oracle数据库的备份只能依赖exp命令(逻辑备份)导出数据文件(注意:不包括日志文件以及控制文件等),导出的所有数据仅仅以一个大文件的方式来存放,但是这种备份容易导致丢失数据;
另一种方式就是使用Oracle自带的备份工具rman。一次rman备份(物理备份)的全过程如下:因为使用rman备份不会产生数据丢失的情况,所以必须有一个全备份的文件,使用rman需要先进行一次全备份,相当于将当前数据库里面的所有文件以及日志都全盘拷贝一份到备份介质中,然后通过归档日志(实时更新的)的记录看每个进程都对数据库做了哪些修改。
以上就是关于怎么样导出数据库里的表格和数据(数据库怎么导出excel表格)全部的内容,包括:怎么样导出数据库里的表格和数据(数据库怎么导出excel表格)、linux下怎么用exp和imp导出和导入指定的oracle数据库表、如何在Oracle中使用exp和imp导出,导入dmp数据库文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)