ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle loader data

oracle loader data

原创 Linux操作系统 作者:oldzhuang 时间:2010-04-06 21:35:35 0 删除 编辑
sqlloader可以将文本格式的数据直接导入到ORACLE的表中,只做了一些小实验,对于大数据的效率没有尝试,blob字段的导入方式也没尝试。
在控制台输入 sqlldr可以看到用法说明。
-------------------------------------------------------------------------------------
在D盘下建立数据文件data.txt,用于数据的读取
1,  2001-3-6,
2, 2010-3-4,
3, 1998-12-9,
-----------------------------------------------------------------------------------
在D盘下建立控制文件control.txt,用于进行读取时的一些说明
load data
infile 'd:\data.txt'
append into table webinfo
(id char terminated by ',',
timestamp date(20) 'yyyy-mm-dd' terminated by ',',
name char terminated by whitespace)
--------------------------------------------------------------------------------
在数据库中建立表
create table webinfo
(
id int,
timestamp date,
name varchar2(100)
)

---------------------------------------------------------------------------------------
控制台执行 sqlldr userid=user/password control='control.txt' log='d:\log.txt'

达到提交点-逻辑记录计数 2
达到提交点-逻辑记录计数 3

查看d:\log.txt
---------------------------------------------------------------------------------------------------------
SQL*Loader: Release 10.2.0.1.0 - Production on 星期二 4月 6 21:46:32 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

控制文件:      d:\data.ctl
数据文件:      d:\data.txt
  错误文件:    d:\data.bad
  废弃文件:    未作指定
 
(可废弃所有记录)

要加载的数: ALL
要跳过的数: 0
允许的错误: 50
绑定数组: 64 行, 最大 256000 字节
继续:    未作指定
所用路径:       常规

表 WEBINFO,已加载从每个逻辑记录
插入选项对此表 APPEND 生效

   列名                        位置      长度  中止 包装数据类型
------------------------------ ---------- ----- ---- ---- ---------------------
ID                                  FIRST     *   ,       CHARACTER           
TIMESTAMP                            NEXT    20   ,       DATE yyyy-mm-dd     
NAME                                 NEXT     *  WHT      CHARACTER           


表 WEBINFO:
  3 行 加载成功。
  由于数据错误, 0 行 没有加载。
  由于所有 WHEN 子句失败, 0 行 没有加载。
  由于所有字段都为空的, 0 行 没有加载。


为绑定数组分配的空间:                 34432 字节 (64 行)
读取   缓冲区字节数: 1048576

跳过的逻辑记录总数:          0
读取的逻辑记录总数:             3
拒绝的逻辑记录总数:          0
废弃的逻辑记录总数:        0

从 星期二 4月  06 21:46:32 2010 开始运行
在 星期二 4月  06 21:46:32 2010 处运行结束

经过时间为: 00: 00: 00.07
CPU 时间为: 00: 00: 00.03
---------------------------------------------------------------------------------------

在datafile中故意将某些行数的格式弄错,可以在log中查看到所报出的信息。
---------------------------------------------------------------------------------------------
下面是来自http://yung.blog.dongfeng.net/771.html中控制文件的一个模板

LOAD DATA
INFILE 't.dat' // 要导入的文件
// INFILE 'tt.date' // 导入多个文件
// INFILE * // 要导入的内容就在control文件里 下面的BEGINDATA后面就是导入的内容, *和't.dat'不能同时存在

INTO TABLE table_name // 指定装入的表
BADFILE 'c:bad.txt' // 指定坏文件地址

************* 以下是4种装入表的方式
APPEND // 原先的表有数据 就加在后面
// INSERT // 装载空表 如果原先的表有数据 sqlloader会停止 默认值
// REPLACE // 原先的表有数据 原先的数据会全部删除
// TRUNCATE // 指定的内容和replace的相同 会用truncate语句删除现存数据

************* 指定的TERMINATED可以在表的开头 也可在表的内部字段部分
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
// 装载这种数据: 10,lg,"""lg""","lg,lg"
// 在表中结果: 10 lg "lg" lg,lg
// TERMINATED BY X '09' // 以十六进制格式 '09' 表示的
// TERMINATED BY WRITESPACE // 装载这种数据: 10 lg lg

TRAILING NULLCOLS ************* 表的字段没有对应的值时允许为空

************* 下面是表的字段
(
col_1 , col_2 ,col_filler FILLER // FILLER 关键字 此列的数值不会被装载
// 如: lg,lg,not 结果 lg lg
)
// 当没声明FIELDS TERMINATED BY ',' 时
// (
// col_1 [interger external] TERMINATED BY ',' ,
// col_2 [date "dd-mon-yyy"] TERMINATED BY ',' ,
// col_3 [char] TERMINATED BY ',' OPTIONALLY ENCLOSED BY 'lg'
// )
// 当没声明FIELDS TERMINATED BY ','用位置告诉字段装载数据
// (
// col_1 position(1:2),
// col_2 position(3:10),
// col_3 position(*:16), // 这个字段的开始位置在前一字段的结束位置
// col_4 position(1:16),
// col_5 position(3:10) char(8) // 指定字段的类型
// )

BEGINDATA // 对应开始的 INFILE * 要导入的内容就在control文件里
10,Sql,what
20,lg,show



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10945710/viewspace-631437/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 放假了
下一篇: 我们的DB
请登录后发表评论 登录
全部评论

注册时间:2010-04-03

  • 博文量
    9
  • 访问量
    10082