关于Oracle中使用
SQLLDR
有时候会出现关于空格保留或去除的问题,就这个问题的解决方案有不少,但如果是由于参数设置问题,可能就本文所说的问题解决。
使用 SQLLDR
加载入库,一般就使用分隔符取值或者定长取值。使用 分隔符取值 时,空格是会保留的,而使用 定长取值 的时候就会自动去除空格(本文所说空格指内容前后的空格,不包括文字中的空格)。
关于参数“PRESERVE BLANKS
”
SQLLDR
中有一个参数“PRESERVE BLANKS
”,用于控制定长时的空格保留。
当 input file 是分隔符时,_control file_ 中的 PRESERVE BLANKS
无效;
当 input file 是定长时,_control file_ 中的 PRESERVE BLANKS
有效。
所以,定长取值 时,可以加 PRESERVE BLANKS
这个参数,_保留空格入库_。
可以在 TRUNCATE INTO TABLE
中加入该参数,全部字段都保留空格,如:
1 | LOAD DATA |
也可以在字段后加如该参数,只保留该字段空格,如:
1 | LOAD DATA |
利用 trim()
去除空格
定长取值默认是自动去除空格的,而分隔符取值则会保留空格入库。所以,去除空格可以利用
trim()
函数。如:
1 | LOAD DATA |
总结
对于SQLLDR保留或去除空格,可以分按如下操作:
- 定长:
- 保留:加入参数
PRESERVE BLANKS
- 去除:默认去除,无需操作
- 保留:加入参数
- 分隔符:
- 保留:默认保留
- 去除:使用
trim()
函数