向oracle中的数据表导入外部excle中的数据时日志文件一直显示‘数据文件的字段超出最大长度’

这是我创建的一个测试表

img

这是excle文件中的内容,后缀.csv

img

这是控制文件的内容
load data
infile 'D:\myoracle\xiaozhu.csv'
append into table "XIAOZHU"
fields terminated by ','(a char(10),b char(10),c char(10))

这里数据明明没超过规定数据类型的长度啊,但是为什么还是无法插入数据?

求解答

我的测试结果完全正常。看一下你的csv文件,估计是excel中设置了格式,保存文档有列超过了10位。

C:\Users\cdb>sqlldr control=test.ctl
用户名:/ as  sysdba
SQL*Loader: Release 19.0.0.0.0 - Production on 星期日 11月 27 15:59:23 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.
所用路径:       常规
达到提交点 - 逻辑记录计数 3

表 TEST:
  已成功载入 3 行。

查看日志文件:
  test.log

C:\Users\cdb>more <test.csv
2,3,4
3,4,5
4,5,6

img


连接到:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> create table test(a char(10),b char(10),c char(10));
表已创建。
SQL> desc test
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 A                                                  CHAR(10)
 B                                                  CHAR(10)
 C                                                  CHAR(10)

SQL> exit
从 Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0 断开

C:\Users\cdb>more <test.csv
2,3,4
3,4,5
4,5,6

C:\Users\cdb>more <test.ctl
load data
infile 'C:\Users\cdb\test.csv'
append into table "test"
fields terminated by ','(a char(10),b char(10),c char(10))

C:\Users\cdb>sqlldr control=test.ctl
用户名:/ as  sysdba

SQL*Loader: Release 19.0.0.0.0 - Production on 星期日 11月 27 15:59:23 2022
Version 19.3.0.0.0

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

所用路径:       常规
达到提交点 - 逻辑记录计数 3

表 TEST:
  已成功载入 3 行。

查看日志文件:
  test.log
了解有关加载的详细信息。


C:\Users\cdb>more <test.log

SQL*Loader: Release 19.0.0.0.0 - Production on 星期日 11月 27 15:59:23 2022
Version 19.3.0.0.0

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

控制文件:      test.ctl
数据文件:      C:\Users\cdb\test.csv
  错误文件:    test.bad
  废弃文件:    未作指定

(可废弃所有记录)

要加载的数: ALL
要跳过的数: 0
允许的错误: 50
绑定数组: 250 行, 最大 1048576 字节
继续:    未作指定
所用路径:       常规

表 TEST,已加载从每个逻辑记录
插入选项对此表 APPEND 生效

   列名                  位置   长度  中止 包装 数据类型
------------------------------ ---------- ----- ---- ---- ---------------------
A                                   FIRST    10   ,       CHARACTER
B                                    NEXT    10   ,       CHARACTER
C                                    NEXT    10   ,       CHARACTER


表 TEST:
  已成功载入 3 行。
  由于数据错误, 0 行 没有加载。
  由于所有 WHEN 子句失败, 0 行 没有加载。
  由于所有字段都为空值, 0 行 没有加载。


为绑定数组分配的空间:                  9000 字节 (250 行)
读取   缓冲区字节数: 1048576

跳过的逻辑记录总数:          0
读取的逻辑记录总数:             3
拒绝的逻辑记录总数:          0
废弃的逻辑记录总数:        0

从 星期日 11月 27 15:59:23 2022 开始运行
在 星期日 11月 27 15:59:27 2022 处运行结束

经过时间为: 00: 00: 04.06
CPU 时间为: 00: 00: 00.02


C:\Users\cdb>