使用sqlldr加载数据拼接ACCOUNT_NO前缀触发ORA-00984错误如何解决
问题原因
你当前控制文件中给ACCOUNT_NO字段拼接前缀的表达式写法错误:字符串常量A_F_没有用单引号包裹,Oracle解析表达式时会将未加引号的A_F_识别为数据库列名,而非你想要的字符串前缀,因此抛出ORA-00984: column not allowed here错误。
解决方法
将控制文件中ACCOUNT_NO字段的配置行修改为如下格式即可,给字符串常量A_F_加上单引号:
"ACCOUNT_NO" "'A_F_'||:ACCOUNT_NO"
额外注意事项
- 表中
ACCOUNT_NO字段定义为varchar2(30),拼接的前缀A_F_占4个字符,需确保源文件中账号的长度不超过26位,否则会因为超长导致加载报错 - 如果业务允许超长截断,也可以调整表达式为
"ACCOUNT_NO" "SUBSTR('A_F_'||:ACCOUNT_NO,1,30)"避免长度溢出
内容的提问来源于stack exchange,提问作者Sijo Kurien
相关产品推荐
相关产品推荐

