登录
首页精彩阅读SQL LDR默认字符最大长度限制问题
SQL LDR默认字符最大长度限制问题
2017-05-27
收藏

SQL LDR默认字符最大长度限制问题

场景:

上游的文件导入系统报超过字段长度。

现象:

字段有256个字节,而表的字段COL1长度为VARCHAR2(500),按理说不应该超长。

分析:

分析控制文件发现:

options(direct=true)

Load data

Append

into table XXX_BAT

FIELDS TERMINATED BY X'1B'

TRAILING NULLCOLS

(

......

COL1,

)

因为COL1的长度为500,超长的原因首先想到的是字符集问题。是否是文件中的中文是UTF8格式?

通过wc -c xxx.txt的结果为X1和wc -m xxx.txt的结果为X2

中文字符数(UTF8)=(X1-X2)/3

中文字符数(GBK)=(X1-X2)/2

计算出每个中文在文件中占有两个字节,是GBK格式,文件编码格式没问题。而X1=256个字节,Sqlldr中的字符字段的默认最大长度为255,而X1=256>255,所以报错。

结论:

该问题主要是因为导入文本中的字符超过了255个字符,超过了sqlldr默认导入字符的最大长度。

修改方法比较简单,在控制文件中COL1 CHAR(500), 提升默认字符的导入最大长度。这个问题本身不是很复杂,属于地雷型问题。

我们在使用sql ldr导入长文本的时候,不仅仅要扩大表的字段长度,也要注意控制文件中的默认长度。最好做好字段长度大于255的控制文件检查,以免踩雷。


数据分析咨询请扫描二维码

客服在线
立即咨询