Chinaunix首页 | 论坛 | 博客
  • 博客访问: 89524
  • 博文数量: 42
  • 博客积分: 905
  • 博客等级: 准尉
  • 技术积分: 400
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-14 14:08
文章分类

全部博文(42)

文章存档

2015年(1)

2011年(41)

我的朋友

分类: Oracle

2011-05-16 22:27:19

SQL*Loader简介


SQL*Loader从文本文件导数据到数据库中。功能包括:


从定界文件装数据


从固定长度的文本文件装数据


从二进制文件装数据


在输入文件中过滤数据


SQL*Loader使用的数据类型


Char:该char和数据库中的char类型不同,它包括数据库中的charvarcharCLOB等类型


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"
)


 


(3)执行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

阅读(1398) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~