Oracle外部表使用多字符记录及字段分隔符的配置问题咨询
问题解答
1. Oracle外部表是否支持多字符作为分隔符
Oracle 10g及更高版本中,ORACLE_LOADER驱动完全支持使用长度不超过255字节的多字符字符串作为记录分隔符、字段分隔符,该用法属于官方支持的合法语法,你最初的写法本身语法没有问题,读取失败是其他配置项缺失导致的。
2. 首尾为同一多字符分隔符的配置方法
你当前的配置存在三个核心问题导致无法读取:
- 没有配置去除字段外层双引号的参数,Oracle会把双引号识别为字段内容的一部分,和你定义的字段长度不匹配
- 以
!!作为记录分隔符时,拆分后会产生大量空的无效记录块,没有过滤规则就会导致加载失败 - 没有配置多余空白字符修剪规则,拆分后残留的换行、空格会干扰字段识别
你可以直接替换建表语句中的ACCESS PARAMETERS部分为如下内容即可正常读取:
ACCESS PARAMETERS ( RECORDS DELIMITED BY '!!' -- 过滤空记录块:拆分后第一个字符为换行的无效块直接跳过 LOAD WHEN (1:1) != CHR(10) FIELDS TERMINATED BY '!@!' -- 自动去除字段首尾包裹的双引号 OPTIONALLY ENCLOSED BY '"' MISSING FIELD VALUES ARE NULL -- 自动修剪字段前后的多余空格、换行符 TRIM SPACES ( ID CHAR(4), MILL_FAC_ID CHAR(200), MILL_LOC_ID CHAR(200), MILL_ENC_TYP_ID CHAR(20) ) )
内容的提问来源于stack exchange,提问作者Kurt
相关产品推荐
相关产品推荐

