数据在SQLLDR的时候提示错误, 使用TRAILING NULLCOLS

数据在SQLLDR的时候提示错误
在逻辑记录结束之前未找到列

1.sale.log文件

SQL*Loader: Release 10.2.0.4.0 - Production on Fri Jun 27 16:02:28 2014


Copyright (c) 1982, 2007, Oracle.  All rights reserved.


Control File:   sale.ctl
Data File:      sale418.csv
  Bad File:     sale418.bad
  Discard File:  none specified


 (Allow all discards)


Number to load: ALL
Number to skip: 0
Errors allowed: 50
Bind array:     64 rows, maximum of 256000 bytes
Continuation:    none specified
Path used:      Conventional


Table TMP3, loaded from every logical record.
Insert option in effect for this table: INSERT


   Column Name                  Position   Len  Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
USERNAME                            FIRST     *   ,       CHARACTER
PHONE1                               NEXT     *   ,       CHARACTER
PHONE2                               NEXT     *   ,       CHARACTER
PHONE3                               NEXT     *   ,       CHARACTER
EMAIL1                               NEXT     *   ,       CHARACTER
EMAIL2                               NEXT     *   ,       CHARACTER


Record 1: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 3: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 6: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 7: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 8: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)

Record 10: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 11: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 12: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 14: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 16: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 18: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 19: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 20: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 21: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 22: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 25: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 30: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 33: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 34: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 35: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 36: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 39: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 40: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 44: Rejected - Error on table TMP3, column EMAIL2.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 51: Rejected - Error on table TMP3, column EMAIL2.

MAXIMUM ERROR COUNT EXCEEDED - Above statistics reflect partial run.




Table TMP3:
  70 Rows successfully loaded.
  51 Rows not loaded due to data errors.
  0 Rows not loaded because all WHEN clauses were failed.
  0 Rows not loaded because all fields were null.




Space allocated for bind array:                  99072 bytes(64 rows)
Read   buffer bytes: 1048576


Total logical records skipped:          0
Total logical records read:           121
Total logical records rejected:        51
Total logical records discarded:        0


Run began on Fri Jun 27 16:02:28 2014
Run ended on Fri Jun 27 16:02:31 2014


Elapsed time was:     00:00:02.99
CPU time was:         00:00:00.01

1.查看bad文件,找到错误数据是否与 要导入的excel或者txt文件的列数、要导入的目标表的列数一致

2.如果列一致,查看最后一列是否为空,如果最后一列为空,sqlldr运行时会报错
加上trailing nullcols (表的字段没有对应的值时允许为空 ),

将所有不在纪录中的指定位置的列当作空值,指记录中没有内容(空格、空白、或null)的列被当作null


load data
infile 'sale418.csv'
into table tmp3
fields terminated by ','
trailing nullcols -----将所有不在纪录中的指定位置的列当作空值
(username,phone1,phone2,phone3,email1,email2)



### 使用 SQL*Loader 导入数据到 Oracle 数据库 #### 创建目标表结构 为了确保能够顺利导入数据,首先需要在 Oracle 数据库中创建相应的表格。例如: ```sql create table TEST_TICE ( id NUMBER(11), name VARCHAR2(255) ); ``` 此操作定义了一个名为 `TEST_TICE` 的新表,其中包含两个字段:`id` 和 `name`[^5]。 #### 准备控制文件与数据文件 SQL*Loader 需要两份独立的文件来进行数据迁移工作——一个是描述如何解析并映射源数据至目标表结构的 **控制文件** (通常带有 `.ctl` 扩展名),另一个则是实际存储待迁移到数据库内的原始数据的 **数据文件**(可以是 CSV 或其他格式)。对于本例而言,假设有一个位于桌面路径下的 CSV 文件用于提供具体数值给上述新建的 `TEST_TICE` 表格使用。 以下是针对这个场景编写的简单版控制文件示例内容: ```plaintext load data infile 'C:\Users\ChenChaoJie\Desktop\YUAN_TICE.csv' into table TEST_TICE insert /* 默认行为 */ fields terminated by ',' trailing nullcols ( id, name ) ``` 这段配置指定了输入文件的位置以及其内部各列之间的分隔方式,并明确了哪些列应该被写入对应的数据库表内。 #### 启动 SQL*Loader 并执行加载过程 最后一步是在命令提示符下启动 SQL*Loader 工具本身,并通过传递必要的参数来触发整个导入流程。具体的调用形式如下所示: ```bash sqlldr userid=your_username/your_password control='path_to_your_control_file.ctl' ``` 这里需要注意替换掉占位符部分的实际值,比如用户名、密码及完整的控件文件路径等信息。当一切设置无误之后,运行这条指令即可开始正式的数据传输作业了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值