如何解决此 ORA-01722: 基于 SQL *Loader 的并发程序中的无效数字错误?

问题描述

我正在使用基于 sql * 加载程序的并发程序将 .csv 上传到 Oracle 数据库表。

我的桌子是:

CREATE TABLE Production_Plan
(
  PROCESS     VARCHAR2(4000 BYTE),SKU         VARCHAR2(4000 BYTE),MACHINE     VARCHAR2(4000 BYTE),PRODUCTION  NUMBER
)

.csv 表中的一个示例行是:

enter image description here

并发程序运行后,出现警告和日志文件显示

Record 1: Rejected - Error on table Production_Plan,column PRODUCTION. ora-01722: invalid number

但是,如果我通过 TOAD 导入与 Excel 文件相同的数据,则不会引发任何错误

解决方法

控制文件;为简单起见,我将示例数据放在那里。注意应用于 to_number 列的 production 函数。

load data
infile *
replace
into table production_plan
fields terminated by ';'
(process,sku,machine,production "to_number(:production,'999.99')"
)

begindata
sample process;0.12 x 770;sample machine;11.3

加载会话和结果:

SQL> $sqlldr scott/tiger control=test3.ctl log=test3.log

SQL*Loader: Release 11.2.0.2.0 - Production on Sub Svi 1 13:25:57 2021

Copyright (c) 1982,2009,Oracle and/or its affiliates.  All rights reserved.

Commit point reached - logical record count 1

SQL> select * From production_plan;

PROCESS              SKU                  MACHINE              PRODUCTION
-------------------- -------------------- -------------------- ----------
sample process       0.12 x 770           sample machine             11,3

SQL>