oracle导入导出

来源:互联网 发布:python初学者看什么书 编辑:程序博客网 时间:2024/04/24 02:13
一、Oracle数据库导入导出
导入导出可采用命令方式、PL/SQL工具 2种方式
 
1、  命令方式
数据库导出:
1)                将数据库TEST完全导出,用户名system密码manager导出到D:\daochu.dmp中exp system/manager@TEST file=d:\daochu.dmp full=y
2)                 将数据库中的表bookinfor、dept导出
Exp  doris/doris@TESTDB file= d:\data\daochu.dmp tables=(bookinfor,dept)
3)                 按条件导出数据
exp doris/doris@doris file=d:\daochu1.dmp tables=(dept) query=’where dept_id=1’
--query子句
4)                 只导出表,不导出数据
exp doris/doris@doris file=D:\daochu2.dmp rows=N tables=(bookinfor)
--rows=N 表示只导出表,不导出数据
5)                 按用户方式导出数据
exp scott/tiger@doris file=e:\scott_back owner=scott;
6)                 按表空间方式导出数据
exp sys/doris@doris tablespaces=(users) file=e:\user_tab; --只有DBA才能执行完整数据库或表空间的导出
 
数据库导入:
1)                 将D:\daochu.dmp 中的数据导入 TEST数据库中
imp system/manager@TEST file=d:\daochu.dmp
imp doris/doris@testdb full=y  file= d:\data\daochu.dmp ignore=y
--ignore=y则会跳过错误
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
2)                将d:\daochu.dmp中的表table1导入
imp system/manager@TEST file=d:\daochu.dmp tables=(table1)
3)                 将数据库TEST中用户user1的表dept导到用户user2,密码user2下
imp user2/user2@TEST file=d:\daochu.dmp fromuser=user1 touser=user2 tables=(dept)
             二、批量导入数据到oracle的方法(以excel为例)
经过摸索,解决了excel表导入oracle数据库的问题,并通过了实验。我主要使用了2种方法,这些方法也可以用于将其它格式的数据导入到oracle中,这里只是以excel为例。  
方法一,使用SQL*Loader  
这个是用的较多的方法,前提必须oracle数据中目的表已经存在。  
大体步骤如下:  
用sqlloader:  (如果表不存在,则必须先建表)
1、打开MicroSoft   Excel   2007
2、文件(F)→新建(N)→工作簿→   录入需要导入的数据
例如,在Excel中数据格式如下:
id
username
password
2
bb
342
3
cc
234
4
dd
433
4、文件(F)→另存为(A)→  
保存类型为:制表符分隔,起名为text.txt,保存到C:\  
5、连入SQL*Plus   或者PL/SQL
登陆,创建表结构  
SQL>   create   table   test  
    (  
    id       number,        --序号  
    username    varchar2(10),     --用户名  
    password    varchar2(10),     --密码  
     );  
6、创建SQL*Loader输入数据所需要的文件,均保存到C:\,用记事本编辑:  
控制文件:input.ctl,内容如下:  
  load   data             --1、控制文件标识  
  infile   'C:\text.txt'              --2、要输入的数据文件名为text.txt  
  append   into   table   test      --3、向表test中追加记录  
  fields   terminated   by   X'09'    --4、字段终止于X'09',是一个制表符(TAB)  
  (id,username,password)         --定义列对应顺序  
a、insert,为缺省方式,在数据装载开始时要求表为空  
b、append,在表中追加新记录  
c、replace,删除旧记录,替换成新装载的记录  
d、truncate,同上  
7、在DOS窗口下使用SQL*Loader命令实现数据的输入  
C:\>sqlldr   userid=system/manager   control=input.ctl  
  默认日志文件名为:input.log  
  默认坏记录文件为:input.bad  
方法二   利用PLSQL   Developer  
使用PLSQL   Developer工具,这个是常用的工具。  
在单个文件不大的情况下(少于100000行),并且目的表结构已经存在的情况下——对于excel而言肯定不会超过了,因为excel文件的最大行为65536——   可以全选数据Ctrl+V,然后用PLSQL   Developer工具。
Excel表中的数据如下,全选数据复制(不要选中列头)
id
username
password
2
bb
342
3
cc
234
4
dd
433
1、  在PLSQL   Developer的sql   window里输入select   *   from   test   for   update;   (必须加上关键字for update)
 
2 、 按F8执行  
3、  打开锁,   鼠标定位到最后一行。  再把鼠标点到第一列的列头,使全列成选中状态,然后Ctrl+C,再鼠标单击√à关闭锁àcommit提交即可。
   使第一列成全选中状态
然后,Ctrl+C,结果如下:
 关闭锁,最后再commit即可。


作者 neola
原创粉丝点击