Oracle数据库导入/导出
1、使用PL/SQL工具来进行导出/导入
(1)、导出,如图所示:用红色框框出来的两个是必须要有的,第一个框,即导出可执行文件,这个是可以通过最后面那个按钮来确定默认导出可执行文件的,但是本人这里,不知道是因为数据库是64位而PL/SQL是32位的原因还是安装的Oracle数据是精简版的,不是完全版的原因,去网上搜了一下,说的是:“在确保oracle客户端安装完整的情况下,出现这种情况的原因是安装目录下的exp.exe文件缺失。”具体原因没有找到,若读者有好的建议或方法,欢迎与我共同分享。
(2)、导入,如图:问题和上面导出的一样。
以上方法如果环境允许的话,操作起来还是非常简便的,但是如果遇到我这种情况,不妨换一下其他方式,毕竟重新安装Oracle或PL/SQL还是挺麻烦的。
2、利用CMD命令来进行导出/导入操作
(1)、数据的导出:找到目标数据库,根据个人所需,在DOS环境下执行相应语句,便可完成导出操作。
具体步骤:
<1>、因为是直接在DOS环境下进行操作,所以在正式执行导出:
操作之前,我们需要确定目标数据库是否存在和可连接
D:\Oracle\product\10.1.0\Client_1\NETWORK\ADMIN目录下有个tnsname.ora文件,内容如下:
CMSTAR =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.13.200)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = cmstar)
)
)
<2>、使用DOS命令,测试数据库是否可连接,输入:tnsping DatabaseName
<3>、数据的导出:
[1]、将数据库DatabaseNameA完全导出,用户名:UserName,密码:Password导出到D:\data.dmp中
exp UserName/[email protected] file = D:\data.dmp full = y
expdp UserName/[email protected] directory=VBM_data dumpfile=数据包名.DMP[2]、将数据库中UserA用户和UserB用户的表导出
exp UserA/[email protected] file = D:\data.dmp owner=(UserA,UserB)
[3]、将数据库中的表Table1和Table2导出
exp UserName/[email protected] file = D:\data.dmp tables=(table1,table2)
[4]、将数据库的表table1中的字段filed1以“00”开头的数据导出
exp UserName/[email protected] file = D:\data.dmp tables=(table1) query =\ "where filed1 like '00%'\"
注:如果想导出的文件是压缩文件,在上面的命令后面加上compress=y即可。
(2)、数据的导入:在正式执行导入命令之前,为了一些实际情况,我们可以做一些处理,具体情况具体而论。比如:我现在要将库A的表导入到库B,但是在此之前,库B其实是有库A中所有的表的,但是因为库A经常维护,而库B就偶尔维护,所以,库A的表结构与最新要求更匹配,但是我现在又要用库B,所以需要维护一下库B,即将库A的的表重新导入到库B中(现目前只知道这种方法),所做处理如下:
<1>、删除库B中的用户A,并及时清理相应表空间。此操作在PL/SQL环境下进行。
--删除用户
drop user USERA cascade;
--删除表空间TABLESPACEA和TABLESPACEB及其包含的内容和数据文件
drop tablespace TABLESPACEA including contents and datafiles;
drop tablespace TABLESPACEB including contents and datafiles;
<2>、创建临时表空间和永久表空间。此操作在PL/SQL环境下进行。
--创建临时表空间(temporary tablespace TABLESPACEA)并指定存放地点(tempfile 'D:\oracle_data\data\TBS_FMIS_TEMP.dbf')、表空间数据文件的初始大小(size 50m)、表空间自动增长的大小(autoextend on next 50m)、表空间最大的大小(maxsize 2048m)和管理方式(extent management local)
create temporary tablespace TABLESPACEA
tempfile 'D:\oracle_data\data\TBS_FMIS_TEMP.dbf'
size 50m
autoextend on
next 50m maxsize 2048m
extent management local;
--创建表空间
create tablespace TABLESPACEB
logging
datafile 'D:\oracle_data\data\TBS_FMIS_DATA1.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
<3>、创建目录‘、用户,并给用户设置默认表空间和授权。此操作在PL/SQL环境下进行。
--创建目录
create directory DirectoryName as 'F:\oracle_data\VBM_data'
--创建用户并设置默认表空间
create user FMIS identified by 1
default tablespace TABLESPACEB
temporary tablespace TABLESPACEA;
--给用户授权
grant connect,resource,dba to USERA;
<4>、数据导入。此操作在DOS环境下进行。
[1]、将”数据包名.DMP”中的数据导入到数据库DatabaseName中去
impdp User/[email protected] directory = DirectoryName dumpfile =数据包名.DMP remap_schema = USERA:USERB
注:在导出时,数据包中有可能带出当时的用户名,例:USER.TABLEA,如果直接到入的话,会出现错误,所以remap_schema = USERA:USERB的功能就是将用户USERA的数据导入到用户USERB中去。
[2]、将“数据包名.DMP”中的表table1导入
imp User/[email protected] file =数据包名.DMP tables = (table1)