如何使用Oracle sqlldr加载Excel导出的无尾逗号CSV文件解决ORA-01722报错
ORA-01722报错原因
你遇到的报错是因为SQLLoader默认未显式指定行终止符时,会将CSV行尾的换行符识别为最后一列值的一部分。如果目标表最后一列是数字类型,携带不可见换行符的字符串无法转换为数字,就会抛出ORA-01722无效数字错误。
你手动添加行尾逗号后,SQLLoader会将第三列的截止位置识别到行尾逗号处,换行符被视为分隔符后的无效内容自动忽略,因此可以正常加载。
无需添加行尾逗号的配置方案
直接修改控制文件,显式指定行终止符即可,无需修改CSV源文件:
控制文件修改示例
load data infile '你的数据文件路径.csv' into table 目标表名称 fields terminated by ',' lines terminated by '\n' -- 新增该行指定换行符为行结束标识 ( 列1, 列2, 列3 )
适配说明
- 如果CSV是Windows系统生成的,换行符为CRLF格式,将上述行终止符参数修改为
'\r\n'即可 - 如果最后一列值可能存在前后冗余空格,可以给最后一列增加trim处理,写法示例:
列3 "trim(:列3)" - 如果存在部分行字段数少于表字段数的场景,可以在fields子句后追加
trailing nullcols配置,缺失的字段会自动填充为null,不会报错
内容的提问来源于stack exchange,提问作者xiaoyunwu
相关产品推荐
相关产品推荐

