Oracle sqlldr笔记
来源:互联网 发布:java http proxy 编辑:程序博客网 时间:2024/06/10 07:58
需求:有两列0X开头的guid,需要合并并转换为10进制数值。
控制文件如下:
LOAD DATA
INFILE “/home/xxxdbfile/xxxdb/xxx.txt”
truncate
INTO TABLE xxx_USER.TTTTTTABLE
FIELD TERMINATE BY “ ”
TRAILING NULLCOLS—这个是指如果上面的列中,有空的列载入,不报错
(
ID sequence(max,1),
GUID1,
GUID2,
ADD_TIME SYSDATE
guid “to_number(replace(:guid1,’0X’,)||replace(:guid2),’0X’,’XXXXXXXXXXXXXXXX’)”
)
序列:
id,sequence(max,1)
常量:
type CONSTANT “1”,
合并两列:
guid1,
guid2,
guid “to_number(replace(:guid1,’0X’,)||replace(:guid2),’0X’,’XXXXXXXXXXXXXXXX’)”
使用oracle函数一定要双引号。使用前面的字段,需要 加冒号:
但是这样有个问题:表必须得建立两个冗余字段guid1和guid2。
如果这样:
guid1 FILLER,
guid2 FILLER
导入的时候会报
SQL*Loader-291: Invalid bind variable GUID1 in SQL string for column GUID1这样的错误,
解决办法:
v_guid1 BOUNDFILLER,
v_guid2 BOUNDFILLER
“to_number(replace(:v_guid1,’0X’,)||replace(:v_guid2),’0X’,’XXXXXXXXXXXXXXXX’)”
这样v_guid1相当于一个变量了。
第二个问题,如果每个文件名是动态的,可以有两种方式:
1. 动态生成脚本,用shell写脚本sed替换
2. 在ctl文件里面不指定数据文件名,而是写在外面。
- Oracle sqlldr笔记
- sqlldr oracle
- oracle sqlldr
- Oracle-sqlldr
- Oracle sqlldr
- Oracle sqlldr
- Oracle sqlldr
- Oracle sqlldr
- oracle sqlldr
- Oracle SQLLDR
- Oracle sqlldr
- Sqlldr笔记
- sqlldr 笔记
- oracle sqlldr unix/linux
- Oracle--sqlldr用法[转]
- Oracle load sqlldr details
- Oracle--sqlldr用法
- Oracle--sqlldr用法
- Spring 2.5 jar 所有开发包及完整文档及项目开发实例
- 关于窗口移动的整理笔记
- [转] 解析oracle的ROWNUM -- 作者: chen_liang
- 一步一步学RMAN之实战RMAN备份
- C#调用Windows API实现自动登录
- Oracle sqlldr笔记
- Cells 【THE 30th ACM/ICPC ASIA REGIONAL 2005 HANGZHOU SITE Problem C: C】
- PR&PO关联
- ubuntu 10.04安装IMA
- jiffies溢出与时间先后比较
- 存储过程分页
- 中国个人电子商务消费有望年增42%
- 利用位运算求最大、最小和中间值
- vs 2008 破解 试用期90天