加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

oracle sqlldr命令

(2011-08-01 18:15:24)
标签:

数据类型

输入记录

sqlldr加载

分类: oracle
sqlldr是cmd下的命令,用来将文本格式数据导入到数据库中。
命令格式:
sqlldr username/password@sid control=*.ctl

*.ctl格式为
load data
infile "d://test.txt"    外部数据文件
infile "d://test1.txt"   可指定多个数据文件
append into table test   向表中追加数据
fields terminated by ","    外部文件的数据以“,”分隔
OPTIONALLY ENCLOSED BY '"'  部分字段可以用双引号包起来
trailing nullcols        表中的字段没有对应的值时填充空值
(
id integer external,    integer external 表示插入的数据是string,如果只保留integer,表示插入的数据是二进制
name "upper(:name)",     将插入的值转换为大写
con ":id||:name",        表中CON列的值是ID和NAME的组合值
dt date"yyyy-mm-dd"      插入日期型数据
)
说明:
load data
告诉SQLLDR要做什么(在这个例子中,则指示要加载数据)。SQLLDR还可以执行CONTINUE_LOAD,也就是继续加载。只有在继续一个多表直接路径加载时才能使用后面这个选项
INFILE * :如果是*号,这会告诉SQLLDR所要加载的数据实际上包含在控制文件本身上,例见下一文。如上例指定包含数据的另一个文件的文件名。如果愿意,可以使用一个命令行参数覆盖这个INFILE语句。要当心,命令行选项总会涵盖控制文件设置
在append的位置还可以用以下列表中的一个值
insert   向表中插入值,但要求表开始时为空,默认的加载选项
replace delete表中的数据,然后插入新值,记录多时速度慢
append   向表中追加数据
truncate trunctate表,然后插入新值,不能回退
FIELDS TERMINATED BY ‘,’:告诉SQLLDR数据的形式应该是用逗号分隔的值。为SQLLDR描述输入数据的方式有数十种;这只是其中较为常用的方法之一。
     TERMINATED BY WHITESPACE会解析这个串,查找空白符(制表符、空格和换行符)的第一次出现,然后继续查找,直至找到下一个非空白符。
(id integer external,
.....
dt date"yyyy-mm-dd"):告诉SQLLDR所要加载的列、这些列在输入数据中的顺序以及数据类型。这是指输入流中数据的数据类型,而不是数据库中的数据类型。列的数据类型默认为CHAR(255)

     加载这样的定界数据时,很可能想逃过输入记录中的某些列。例如,你可能加载字段1、3和5,而跳过第2列和第4列。为此,SQLLDR提供了FILLER关键字。这允许你映射一个输入记录中的一列,但不把它放在数据库中。


例:
C:\>sqlldr scott/tiger control=d:/dept.ctl log=d:/sqlldr.log

dept.ctl的内容如下:

load date
infile "d://test.txt"   
append into table tt
fields terminated by ","  
trailing nullcols      
(
id integer external,  
name "upper(:name)",    
con ":id||:name",      
dt date"yyyy-mm-dd"     
)

test.txt的数据如下
1,a,,2007-07-8
2,b,,2008-07-8
3,c,,2009-07-8

SQL> desc tt ;
名称                                                  是否为空? 类型
----------------------------------------------------- -------- -------------
--------------------
ID                                                             VARCHAR2(10)
NAME                                                           VARCHAR2(20)
CON                                                            VARCHAR2(30)
DT                                                             DATE

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有