首页 > 利用外部命令Oralce数据库导入导出

利用外部命令Oralce数据库导入导出

 

1--数据库导出(exp) 

 

首先进入命令行 

 

导出数据库 

 

在命令行中输入如下命令: 

 

 

exp   c2j/c2j@c2j   

file=c:/table.dmp   

tables=jbitaku,jbitakum  

grants=y

 

 

然后按回车键 

 

说明:  

 

c2j/c2j@c2j  分别表示用户名,密码和服务名 

 

file:输出文件的位置和文件名 

 

tables:输出的表名列表,多个表中间用逗号隔开 

 

 

 

2--数据库导入(imp) 

 

首先进入命令行 

 

 

 

数据库导入(imp) 

 

在命令行中输入如下命令: 

 

 

imp   c2j/c2j@c2j   

file=c:/table.dmp   

fromuser=c2j   ignore=y   

commit=y   grants=y

 

 

然后按回车键 

 

说明: c2j/c2j@c2j  分别表示用户名,密码和服务名 

 

file:要导入的文件的全路迳 

 

fromuser:指明来源用户方 

 

ignore:是否忽略对象创建错误 

 

commit:上载数据缓冲区中的记录,上载后是否执行提交 

 

 

 

出现 正常终了表示导入成功 

 

打开数据库,看是否导入成功 

 

注:Oralce数据库导入导出时要确保Oralce服务启动 

 

以下参考自:http://www.matrix.org.cn/thread.shtml?forumId=36&topicId=23332 

 

一. 导出工具 exp 

 

1. 它是操作系统下一个可执行的文件 存放目录/ORACLE_HOME/bin 

 

exp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移 

 

它有三种模式: 

 

a. 用户模式: 导出用户所有对象以及对象中的数据; 

 

b. 表模式: 导出用户所有表或者指定的表; 

 

c. 整个数据库: 导出数据库中所有对象。 

 

2. 导出工具exp交互式命令行方式的使用的例子 

 

 

$exp test/test123@appdb

Enter array fetch buffer size: 4096 > 回车

Export file: expdat.dmp > m.dmp  生成导出的文件名 

(1)E(ntire database), (2)U(sers), or (3)T(ables): (2)U > 3

Export table data (yes/no): yes > 回车

Compress extents (yes/no): yes > 回车

Export done in ZHS16GBK character set and ZHS16GBK NCHAR character set

About to export specified tables via Conventional Path ...

Table(T) or Partition(T:P) to be exported: (RETURN to quit) > cmamenu 

要导出的表名

. . exporting table                        CMAMENU       4336 rows exported

Table(T) or Partition(T:P) to be exported: (RETURN to quit) >要导出的表名n

Table(T) or Partition(T:P) to be exported: (RETURN to quit) > 回车

Export terminated successfully without warnings.

 

 

3. 导出工具exp非交互式命令行方式的例子 

 

 

$exp scott/tiger tables=(emp,dept) file=/directory/scott.dmp grants=y 

说明:把scott用户里两个表emp,dept导出到文件/directory/scott.dmp

$exp scott/tiger tables=emp query=/"where job=/'salesman/' and sal/<1600/" file=/directory/scott2.dmp

 

 

说明:在exp里面加上导出emp的查询条件job='salesman' and sal<1600 

 

(但我个人很少这样用,还是把满足条件的记录生成临时表后,再exp会方便一些) 

 

 

$exp parfile=username.par file=/directory1/username_1.dmp,

/directory1/username_2.dmp filesize=2000M log=/directory2/username_exp.log

 

 

参数文件username.par内容 

 

userid=username/userpassword 

 

buffer=8192000 

 

compress=n 

 

grants=y 

 

说明:username.par为导出工具exp用的参数文件,里面具体参数可以根据需要去修改 

 

filesize指定生成的二进制备份文件的最大字节数 

 

(可用来解决某些OS下2G物理文件的限制及加快压缩速度和方便刻历史数据光盘等) 

 

二.导入工具 imp 

 

1. 它是操作系统下一个可执行的文件 存放目录/ORACLE_HOME/bin 

 

imp导入工具将EXP形成的二进制系统文件导入到数据库中. 

 

它有三种模式: 

 

a. 用户模式: 导出用户所有对象以及对象中的数据; 

 

b. 表模式: 导出用户所有表或者指定的表; 

 

c. 整个数据库: 导出数据库中所有对象。 

 

只有拥有IMP_FULL_DATABASE和DBA权限的用户才能做整个数据库导入 

 

imp步骤: 

 

(1) create table (2) insert data (3) create index (4) create triggers,constraints 

 

2.导入工具imp交互式命令行方式的例子 

 

 

$ imp

Import: Release 8.1.6.0.0 - Production on 星期五 12月 7 17:01:08 2001

(c) Copyright 1999 Oracle Corporation.  All rights reserved.

用户名:  test

口令:****

连接到: Oracle8i Enterprise Edition Release 8.1.6.0.0 - 64bit Production

With the Partitioning option

JServer Release 8.1.6.0.0 - Production

 

 

导入文件: expdat.dmp> /tmp/m.dmp 

 

输入插入缓冲区大小(最小为 8192 ) 30720> 

 

经由常规路径导出由EXPORT:V08.01.06创建的文件 

 

警告: 此对象由 TEST 导出, 而不是当前用户 

 

已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入 

 

只列出导入文件的内容(yes/no):no> 

 

由于对象已存在, 忽略创建错误(yes/no):no> yes 

 

导入权限(yes/no):yes> 

 

导入表数据(yes/no):yes> 

 

导入整个导出文件(yes/no):no> yes 

 

. 正在将TEST的对象导入到 SCOTT 

 

. . 正在导入表 "CMAMENU" 4336行被导入 

 

成功终止导入,但出现警告。 

 

3.导入工具imp非交互式命令行方式的例子 

 

 

$ imp system/manager fromuser=jones tables=(accts) 

$ imp system/manager fromuser=scott tables=(emp,dept) 

$ imp system/manager fromuser=scott touser=joe tables=emp 

$ imp scott/tiger file = expdat.dmp full=y 

$ imp scott/tiger file = /mnt1/t1.dmp show=n buffer=2048000 ignore=n

 commit=y grants=y full=y log=/oracle_backup/log/imp_scott.log

$ imp system/manager parfile=params.dat 

params.dat 内容 

file=dba.dmp show=n ignore=n grants=y fromuser=scott tables=(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生成的文件 

 

根据情况我们可以用 

 

$ imp username/password@connect_string 

 

说明: connect_string 是在/ORACLE_HOME/network/admin/tnsnames.ora 

 

定义的本地或者远端数据库的名称 

 

注意事项: 

 

UNIX: /etc/hosts 要定义本地或者远端数据库服务器的主机名 

 

win98: windows/hosts 和IP地址的对应关系 

 

win2000: winnt/system32/drivers/etc/hosts 

 

exp 

 

将数据库内的各对象以二进制方式下载成damp文件,方便数据迁移。 

 

buffer:下载数据缓冲区,以字节为单位,缺省依赖操作系统 

 

consistent:下载期间所涉及的数据保持read only,缺省为n 

 

direct:使用直通方式 ,缺省为n 

 

feedback:显示处理记录条数,缺省为0,即不显示 

 

file:输出文件,缺省为expdat.dmp 

 

filesize:输出文件大小,缺省为操作系统最大值 

 

indexes:是否下载索引,缺省为n,这是指索引的定义而非数据,exp不下载索引数据 

 

log:log文件,缺省为无,在标准输出显示 

 

owner:指明下载的用户名 

 

query:选择记录的一个子集 

 

rows:是否下载表记录 

 

tables:输出的表名列表 

 

导出整个实例 

 

 

exp dbuser/oracle file=oradb.dmp log=oradb.log 

full=y consistent=y direct=y

 

 

user应具有dba权限 

 

导出某个用户所有对象 

 

 

exp dbuser/oracle file=dbuser.dmp log=dbuser.log 

owner=dbuser buffer=4096000 feedback=10000

 

 

导出一张或几张表 

 

 

exp dbuser/oracle file=dbuser.dmp 

log=dbuser.log tables=table1,table2 

buffer=4096000 feedback=10000

 

 

导出某张表的部分数据 

 

 

exp dbuser/oracle file=dbuser.dmp log=dbuser.log 

tables=table1 buffer=4096000 feedback=10000 query=/”

where col1=/’…/’ and col2 /<…/”

 

 

不可用于嵌套表 

 

以多个固定大小文件方式导出某张表 

 

 

exp dbuser/oracle file=1.dmp,2.dmp,3.dmp,

… filesize=1000m tables=emp buffer=4096000 feedback=10000

 

 

这种做法通常用在:表数据量较大,单个dump文件可能会超出文件系统的限制 

 

直通路径方式 

 

direct=y,取代buffer选项,query选项不可用 

 

有利于提高下载速度 

 

consistent选项 

 

自export启动后,consistent=y冻结来自其它会话的对export操作的数据对象的更新,这样可以保证dump结果的一致性。但这个过程不能太长,以免回滚段和联机日志消耗完 

 

imp 

 

将exp下载的dmp文件上载到数据库内。 

 

buffer:上载数据缓冲区,以字节为单位,缺省依赖操作系统 

 

commit:上载数据缓冲区中的记录上载后是否执行提交 

 

feeback:显示处理记录条数,缺省为0,即不显示 

 

file:输入文件,缺省为expdat.dmp 

 

filesize:输入文件大小,缺省为操作系统最大值 

 

fromuser:指明来源用户方 

 

ignore:是否忽略对象创建错误,缺省为n,在上载前对象已被建立往往是一个正常现象,所以此选项建议设为y 

 

indexes:是否上载索引,缺省为n,这是指索引的定义而非数据,如果上载时索引已建立,此选项即使为n也无效,imp自动更新索引数据 

 

log:log文件,缺省为无,在标准输出显示 

 

rows:是否上载表记录 

 

tables:输入的表名列表 

 

touser:指明目的用户方 

 

导入整个实例 

 

 

imp dbuser/oracle file=oradb.dmp log=oradb.log 

full=y buffer=4096000 commit=y ignore=y feedback=10000

 

 

导入某个用户所有对象 

 

 

imp dbuser/oracle file=dbuser.dmp log=dbuser.log 

fromuser=dbuser touser=dbuser2 buffer=2048000 commit=y ignore=y feedback=10000

 

 

导入一张或几张表 

 

 

imp dbuser2/oracle file=user.dmp log=user.log tables=table1,table2 

fromuser=dbuser touser=dbuser2 buffer=2048000 commit=y ignore=y feedback=10000

 

 

以多个固定大小文件方式导入某张表 

 

 

imp dbuser/oracle file=/(1.dmp,2.dmp,3.dmp,…/) filesize=1000m tables=emp 

fromuser=dbuser touser=dbuser2 buffer=4096000 commit=y ignore=y feedback=10000

转载于:https://www.cnblogs.com/huozhicheng/archive/2011/06/30/2533139.html

更多相关:

  • 如果excel中有一列存的是手机号码或者身份证号码,那么导入到sql中时,会把手机或者身份证当作数字格式对待,因而会以科学记数法的形式存在sqlserver表中,解决方式,先将excel文件另存为文本文件(制表符)格式,之后sqlserver导入数据时,数据源选择选择“平面数据源”,之后选择刚刚存好的文本文件,导入到sqlserve...

  • 本文来自 运维人生 ,作者:fly是个稻草人链接:http://www.ywadmin.com/?id=76误删除linux系统文件了?不用急,本文将给你一个恢复linux文件的方法,让你轻松应对运维中的各风险问题。方法总比问题多~说在前面的话针对日常维护操作,难免会出现文件误删除的操作。大家熟知linux文件系统不同win有回收...

  • 原文来自SecIN社区—作者:WiHat0x00 什么是WebShell渗透测试工作的一个阶段性目标就是获取目标服务器的操作控制权限,于是WebShell便应运而生。Webshell中的WEB就是web服务,shell就是管理攻击者与操作系统之间的交互。Webshell被称为攻击者通过Web服务器端口对Web服务器有一定的操作权限,而...

  • 断电时文件系统发生了什么?硬盘又发生了什么?下一次开机时写到一半的文件在系统层面还在吗?在底层还在吗?更进一步的, 文件系统如何保证事务性, 会不会存在某种极端情况导致例如最后几个bit还没写完, 文件系统却认为它成功了的情况?回答不限任何文件系统,谢谢!下面是「北极」的回复分享断电的一瞬间,很多事情是无法确定的:1. 你无法确定...

  • 接到项目需求。需要搭建一个页面进行交互,慢慢来b (2).jpg使用python django框架进行页面的搭建在项目文件下打开窗口,输入命令;django-admin startproject helloword#在文件helloword/helloword/创建view.py在view.py文件中输入以代码from django....

  • 常见的错误集合解决方案(一)No.1提示错误'Microsoft.VC90.CRT,version="9.0.21022.8"把Microsoft.NET Framework 3.5.1下面的全部勾选上。No.2解决Qt Designer设计的图标但是VS生成不显示问题描述:在Qt designer中为菜单栏和工具栏设计的图标,但是...