问题描述
我正在使用基于 sql * 加载程序的并发程序将 .csv 上传到 Oracle 数据库表。
我的桌子是:
CREATE TABLE Production_Plan
(
PROCESS VARCHAR2(4000 BYTE),SKU VARCHAR2(4000 BYTE),MACHINE VARCHAR2(4000 BYTE),PRODUCTION NUMBER
)
.csv 表中的一个示例行是:
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>