Было действительно плохой идеей назвать столбец "NUMBER"
(да, в двойных кавычках и в верхнем регистре).Тот факт, что вы можете это сделать, не означает, что вы должны это делать.Теперь вам нужно разобраться с этим и все время использовать один и тот же синтаксис - двойные кавычки и прописные буквы.Посмотрите:
SQL> create table test ("NUMBER" varchar2(10));
Table created.
SQL> insert into test (number) values ('A');
insert into test (number) values ('A')
*
ERROR at line 1:
ORA-00928: missing SELECT keyword
SQL> insert into test ("number") values ('A');
insert into test ("number") values ('A')
*
ERROR at line 1:
ORA-00904: "number": invalid identifier
SQL> insert into test ("NUMBER") values ('A');
1 row created.
SQL>
Сделайте то же самое в контрольном файле.
load data
infile *
replace
into table test
(
"NUMBER" terminated by whitespace
)
begindata
Little
Foot
Как это работает?
SQL> desc test
Name Null? Type
----------------------------- -------- --------------------
NUMBER VARCHAR2(10)
SQL> $sqlldr scott/tiger@xe control=test02.ctl log=test02.log
SQL*Loader: Release 11.2.0.2.0 - Production on Sri Svi 23 22:23:07 2018
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Commit point reached - logical record count 1
Commit point reached - logical record count 2
SQL> select * From test;
NUMBER
----------
Little
Foot
SQL>
Работает нормально.
Однако я бы посоветовал вам переименовать этот несчастный столбец.Избавьтесь от двойных кавычек, теперь и навсегда.