2.2要加载的文件不是以逗号分隔
有两种方式可以参考:修改数据文件,将分隔符替换为逗号。修改控制文件,将的值修改为实际的分隔符。
2.3要加载的数据中包含分隔符
例如要向表插入数据提供的数据格式如下:修改控制文件注意下列示例代码中的粗体字符参数指明定界符为双引号格式文件默认定界符就是双引号你可以根据实际情况修改的参数值如下所示:
,
——控制文件
(oracle@wjq SQL *装载机) vim wjq_test2美元。ctl
加载数据
INFILE '/u01/app/oracle/SQL *装载机/wjq_test2。dat的
截断成表tb_loader
由”、“可选字段终止包围”的,
(SAL ENAME、工作)
,,
——数据文件
(oracle@wjq SQL *装载机) vim wjq_test2美元。dat
史密斯,3904年CLEAK
艾伦,”售货员,M”, 2891年
病房里,“卖点”,“S”“”, 3128年
国王,总统,2523年sqlldr
,
运行如上代码,并查询结果如下:
(oracle@wjq SQL *装载机)$ sqlldr斯科特/老虎控制=/u01/app/oracle/SQL *装载机/wjq_test2。ctl
SQL *装载机:释放11.2.0.4.0 -生产星期二2017年10月31日14:56:40
版权(c) 1982、2011、甲骨文和/或其附属公司只保留所有权利。
提交点达到4 -逻辑记录计数
,,
——查询结果
SCOTT@seiang11g> select * from tb_loader;
ENAME ,,,,JOB ,,,,,,,,,,,,SAL ,,,,,通讯
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SMITH ,,,,CLEAK ,,,,,,,,,3904年
ALLEN ,,,,售货员,M ,,,,,,,2891年
WARD ,,,,,售货员,“S”,,,,,,3128年
KING ,,,,,PRESIDENT ,,,,,2523
,
2.4数据文件没有分隔符
如下的数据文件专业叫做定长字符串,中处理定长字符串也轻而易举。针对此例,我们将控制文件修改如下:
,
——控制文件
(oracle@wjq SQL *装载机) vim wjq_test3美元。ctl
加载数据
INFILE '/u01/app/oracle/SQL *装载机/wjq_test3。dat的
截断成表tb_loader
(
,ENAME位置(1:5),
,工作位置(10:18),
,萨尔位置(23:26)
)
,,
——数据文件
(oracle@wjq SQL *装载机) vim wjq_test3美元。dat
SMITH ,,CLEAK ,,,,,,3904年
ALLEN ,,SALESMAN ,,,2891年
WARD ,,,SALESMAN ,,,3128年
KING ,,,PRESIDENT ,,252
,
位置关键字用来指定列的开始和结束位置,如是指从第个字符开始截止到第个字符作为列的列值的。写法也很灵活,要实现上述功能还可以换成下列几种形式:
①直接指定数值的方式叫作绝对偏移量,如果使用号,专业名词叫相对偏移量,表示上一个字段从哪里结束,这次就从哪里开始,相对偏移量也 可以再做运算,比如就表示从上次结束的位置的地方开始。
②这种相对偏移量类型和长度的优势在于,你只需要为第一列 指定开始位置,其他列只需要指定列长度就可以了,实际使用中比较省的事。
sqlldr运行如上代码,并查询结果如下:
,
——sqlldr命令
(oracle@wjq SQL *装载机)$ sqlldr斯科特/老虎
控制=/u01/app/oracle/SQL *装载机/wjq_test3。ctl
SQL *装载机:释放11.2.0.4.0 -生产星期二2017年10月31日15:04:13
版权(c) 1982、2011、甲骨文和/或其附属公司只保留所有权利。