【转】Oracle的导入导出
下面这些在使用过程中经常使用到的.(以后加上调优的参数说明,SGA区,共享池,PGA,等等spfile里面的参数)
1.Export工具是一个导出程序
语法:
exp UserId/Password@数据库全局名 file=DMP文件的目录 其它参数
获取帮助,敲入:exp help=y
Export常用的参数(1)
Direst 选择是否采用直接路径导出
File指定导出文件名
Full Full=Y将整个数据库导出
Incremental导出上次Incremental 、Cumulative、Complete导出而改变的所有对象
Cumulative 导出上次Cumulative、Complete导出后改变的所有对象
Complete 导出所有的对象
Indexes 指定索引是否被导出
Export常用的参数(2)
Log 指定日志的文件名
Owner 允许为指定的用户导出对象
Parfile 允许从一个文件读取导出参数
Query 指定从表中导出符合条件的行
Record 指定是否在导出系统表中记录Incremental或Cumulative导出,默认为Y
Rows 控制表数据是否被导出
Tables 允许导入一个或多个表
Triggers 指定触发器是否和表一起导出
2.Import工具是一个导入程序
语法:
imp UserId/Password@数据库全局名 file=DMP文件的目录 其它参数
获取帮助,敲入:imp help=y
Import常用的参数(1)
File 指定导入文件名
Fromuser 允许导入指定的用户拥有的表
Full full=Y时,导入DMP文件中所有的事物
Ignore 为Y时,如果数据出错,将继续下一行数据
Indexes 是否导入索引
Log 指定日志文件
Parfile 指定从文件中读导出参数
Rows 指定是否导入表的数据
Import常用的参数(2)
Show 指定显示全部要被执行的参数
Tables 指定导入一个或多个表
Touser 指定导入到哪个用户名下
Userid 指定导入的用户的用户名和密码
3.SQL*Loader简介
SQL*Loader从文本文件导数据到数据库中。功能包括:
从定界文件装数据
从固定长度的文本文件装数据
从二进制文件装数据
在输入文件中过滤数据
SQL*Loader使用的数据类型
Char:该char和数据库中的char类型不同,它包括数据库中的char、varchar、CLOB等类型
Date:时间类型
Interger external:定义整数值
Decimal external:定义包括小数点的数值
装载字段固定长度的文件
一个例子:
Load data
infile ‘yyb_data.txt’
append
Into table emp
( name position(1:10) char,
rank position(11:13) interger external,
birthday position(13:23) date “dd-mm-yyyy”
)
导入有界定符的文件
一个例子:
Load data
Infile ‘c:\yyb.txt’
append
Into table emp
( name char terminated by ‘,’,
rank interger external terminated by ‘,’,
birthday date “dd-mm-yyyy” terminated by ‘,’
)
导入有界定符的文件 (续)
再看一个例子(处理空字段):
Load data
Infile ‘c:\yyb.txt’
append
Into table emp
trailing nullcols
( name char terminated by ‘,’,
rank interger external terminated by ‘,’,
birthday date “dd-mm-yyyy” terminated by ‘,’ )
如何把数据放到表中
从前面的例子中可以看出,它们都包含关键字append,还有其它的关键字:
Insert:指定要装载的是空表,否则失败
Append:添加数据到表,即使表中有数据
Replace:加载前,将删除表中的所有数据
Truncate:与replace同
使用SQL*Loader命令和参数
命令语法为:
sqlldr [param=value [,param= valus … ] ]
参数:
Userid 用户名和密码
Control 指定控制文件名,也就是存放前面的胶片中的代码的文件
Log 指定日志文件名
Bad 指定存放坏记录的文件名
SQL*Loader参数(续前)
Data 指定数据文件名
Skip 允许跳过的记录数量
Load 允许装入的记录数量
Errors 指定允许的错误数
Rows 指定装载多少条记录提交一次
Direct 可以指定为直接路径装载
Parfile 指定包含命令参数的文件名
举个例子来说明:
(1)先创建一张表:
create table test_load(
stu_num number(10,0),
stu_name varchar2(50),
stu_date date
)
(2)准备数据文件(可以采用spool导出,再下来会讲到): dateFile.txt
"1234","niegc","2006-01-01"
"1235","ngc","2006-01-02"
(3)写控制文件(必须注意每一个字段的位置,和时间字段的格式):loader.ctl
Load data
infile 'F:\test\dateFile.txt'
Append into table test_load
fields Terminated by "," Optionally enclosed by'"'
(
stu_num,
stu_name,
stu_date date "YYYY-MM-DD"
)
(4)执行sqlldr
C:\Documents and Settings\Administrator>sqlldr niegc/niegc control=f:\test\loader.ctl log=f:\test\aaaaaa.log
SQL*Loader: Release 9.2.0.1.0 - Production on 星期三 4月 26 22:06:35 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
达到提交点,逻辑记录计数2
成功了,是不是很简单,append 还是insert 上面有说明的哦.
4.Spool简介
spool 是数据的导出命令,最简单的执行如下:
用sqlplus 登陆:
SQL>spool f:\test\bbb.txt
SQL> select * from test_load;
STU_NUM STU_NAME STU_DATE
---------- -------------------------------------------------- ----------
1234 niegc 01-1月 -06
1235 ngc 02-1月 -06
SQL> spool off
这样就可以导出了
如果你想导出自己定义的格式,你可以先set 参数然后再spool
例如:
SET COLSEP ' '
SET ECHO OFF
SET FEEDBACK OFF
SET HEADING OFF
SET PAGESIZE 0
SET LINESIZE 1000
SET NUMWIDTH 12
SET TERMOUT OFF
SET TRIMOUT ON
SET TRIMSPOOL ON