用SQLLDR来装载CLOB/BLOB列的控制文件例子
来源:互联网 发布:linux ftp 指定目录 编辑:程序博客网 时间:2024/05/18 13:47
Oracle的SQLLDR是用来将文本文件中的记录装载到数据库中的工具, 其并行(Parallel),直接(Direct)的装载模式是目前所知最快的方式. 不过用于指定文本格式的控制文件有点难于写, 我在写时也经常需要查阅文档. 为了方便我还是在这儿写一个例子吧, 下面是样表的结构:
SQL> create table test(
2 num_col number(10),
3 char_col char(10),
4 var_col varchar2(10),
5 date_col date,
6 blob_col blob,
7 clob_col clob,
8 raw_col raw(20)
9 );
Table Created.
在这个例子中有CLOB/BLOB列, 因此直接模式不能用, 还需要将ROWS参数设为1, 下面是SQLLDR用的控制文件:
--
-- Generated by AUL/MyDUL, for table hr.test
--
OPTIONS(DIRECT=TRUE,READSIZE=4194304,ERRORS=-1,SKIP=1,ROWS=50000)
LOAD DATA
INFILE 'hr_test.txt' "STR X'0d0a'"
INTO TABLE TEST
FIELDS TERMINATED BY X'7c' TRAILING NULLCOLS
(
NUM_COL CHAR ,
CHAR_COL CHAR(10) ,
VAR_COL CHAR(10) ,
DATE_COL DATE "YYYY-MM-DD HH24:MI:SS" ,
LOBF_00005 FILLER CHAR(32),
BLOB_COL LOBFILE(LOBF_00005) TERMINATED BY EOF ,
LOBF_00006 FILLER CHAR(32),
CLOB_COL LOBFILE(LOBF_00006) TERMINATED BY EOF ,
RAW_COL CHAR
)
当然我给的参数肯定不是最好的, 请你试了后告诉我.
当使用sqlldr加载很长的字符串(超过4000)到表中的clob类型中时,老是报错: 数据文件的字段超出最大长度.查找相关资料后得知,sqlldr每次读入文件中数据流的数据类型默认为CHAR ,长度为 255 .所以只要超过255字符的段都会报这个错.解决方法很简单,在控制文件中字段后添加上char(1000000),例如:
LOAD DATA
INFILE *
INTO TABLE DEMO
TRUNCATE
FIELDS TERMINATED BY ','
(d1 ,
d2 char(1000000)
)
其中表demo的列d2是clob类型,当然1000000只是随便用的一个大数字,只要保证加载的长度不超这个数字就成.
------------------------------------------------------------
以下是ctl控制文件得写法:文件名为ctldemo.ctl
load data
infile 'dump002.dat'
insert
into table "BTGL"."LOBDEMO1"
FIELDS TERMINATED BY '|' TRAILING NULLCOLS
("AA01" CHAR(3) enclosed by '|',
LOBFILE_COL1 FILLER CHAR ,
"AA02" LOBFILE(LOBFILE_COL1) TERMINATED BY EOF NULLIF LOBFILE_COL1 = 'NONE')
然后在DOS下执行:
sqlldr username/password control=ctldemo.ctl
当时要导入得是100多万条,所以我采用了direct方式
c:\>sqlldr username/password control=ctldemo.ctl direct=y
sqlldr也支持多字符分隔符文件导入。只要类似fields terminated by "|||"这样就可以了! 其中|||就是分割符
- 用SQLLDR来装载CLOB/BLOB列的控制文件例子
- CLOB、BLOB , CLOB与BLOB的区别
- CLOB、BLOB , CLOB与BLOB的区别
- CLOB、BLOB , CLOB与BLOB的区别
- CLOB、BLOB , CLOB与BLOB的区别
- CLOB、BLOB , CLOB与BLOB的区别
- 数据装载--sqlldr的使用
- Clob,blob的存储
- CLOB BLOB的区别
- sqlldr控制文件详解
- SQLLDR的例子
- Blob、Clob字段的映射
- hibernate clob/blob的处理
- BLOB和CLOB的区别
- BLOB和CLOB的区别
- Clob和Blob的区别
- CLOB和BLOB的区别
- SQLLDR装载换行符的小问题
- iOS开发之Quartz 2D绘图高阶用法(二)
- TextView ClickableSpan onClickListener点击事件冲突
- Hibernate学习笔记(九)【高级篇】并发、Session管理
- iOS:即时通讯之<掌握篇 环信>
- js判断设备类型,微信浏览器
- 用SQLLDR来装载CLOB/BLOB列的控制文件例子
- Downloads for Apple Developers (Apple开发工具,Xcode safari等)
- Spring Cloud和Docker 来构建微服务
- SQL查询按某字段排序的最大值
- imx6 android4.4.2内核sd卡platform_device注册加载原理
- 在arc模式下 CGImage 释放问题
- 关于java中几个CP的一点说明--stringBuilder和stringBuffer与hashTable和hashMap
- 面试准备,待补充
- 从头开始