Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3731
  • 博文数量: 2
  • 博客积分: 45
  • 博客等级: 民兵
  • 技术积分: 25
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-18 10:18
文章分类

全部博文(2)

文章存档

2012年(2)

我的朋友
最近访客

分类: 数据库开发技术

2012-08-18 10:20:13


Sqlldr中日志报错:“exceeds maximum length (超出最大长度) 一、实验环境:

系统环境:window2007

数据库环境:C:\oracle\ora90\network\ADMIN>sqlplus "/ as sysdba "

SQL*Plus: Release 9.0.1.0.1 - Production on 星期二 87 15:44:36 2012

(c) Copyright 2001 Oracle Corporation. All rights reserved.

连接到:

Oracle9i Enterprise Edition Release 9.0.1.1.1 - Production

With the Partitioning option

JServer Release 9.0.1.1.1 - Production

SQL>

二、实验过程:

1、用户:scott/tiger

2、控制文件dept_02.ctl

LOAD DATA

INFILE *

INTO TABLE DEPT_02

FIELDS TERMINATED BY ','

(DEPTNO,DNAME,LOC )

BEGINDATA

12,Sales,Virginia

22,Accounting,Virginia

32,Consulting,Virginia

42,Finance,Virginia

3、表:

SQL> create table dept_02(deptno number(2) primary key,

2 daname varchar2(8),

3 loc varchar2(13));

表已创建。

SQL> desc dept_02

名称 是否为空? 类型

----------------------------------------- -------- ----------------------------

DEPTNO NOT NULL NUMBER(2)

DANAME VARCHAR2(8)

LOC VARCHAR2(13)

导入数据:

C:\oracle\control>sqlldr userid=scott/tiger control=dept_02.ctl

SQL*Loader: Release 9.0.1.1.1 - Production on 星期三 88 09:33:00 2012

(c) Copyright 2001 Oracle Corporation. All rights reserved.

达到提交点,逻辑记录计数4

查看表:

SQL> SELECT * FROM DEPT_02;

DEPTNO DANAME LOC

---------- -------- -------------

12 Sales Virginia

42 Finance Virginia

只有2条数据进来了。

二、情况:

查看log

记录 2: 被拒绝 - 表 DEPT_02 出现错误。

ORA-01401: 插入的值对于列过大

记录 3: 被拒绝 - 表 DEPT_02 出现错误。

ORA-01401: 插入的值对于列过大

表DEPT_02:

2 行加载成功

由于数据错误, 2 行没有加载。

由于所有 WHEN 子句失败, 0 行没有加载。

由于所有字段都为空的, 0 行没有加载。

原因:

DANAME VARCHAR2(8)

但是23条数据超过了它的长度限制,因此报错。

三、解决方法:

改表

调整相应字段大小:

SQL> ALTER TABLE DEPT_02 MODIFY DANAME VARCHAR2(15);

表已更改。

清空表数据:

SQL> TRUNCATE TABLE DEPT_02;

表已截掉。

再次导入数据:

C:\oracle\control>sqlldr userid=scott/tiger control=dept_02.ctl

SQL*Loader: Release 9.0.1.1.1 - Production on 星期三 88 09:44:57 2012

(c) Copyright 2001 Oracle Corporation. All rights reserved.

达到提交点,逻辑记录计数4

查看表:

SQL> SELECT * FROM DEPT_01;

DEPTNO DANAME LOC

---------- -------------- -------------

10 Sales Virginia

20 Accounting Virginia

30 Consulting Virginia

40 Finance Virginia

查看log

表DEPT_02:

4 行加载成功

由于数据错误, 0 行没有加载。

由于所有 WHEN 子句失败, 0 行没有加载。

由于所有字段都为空的, 0 行没有加载。

有的时候看要插入的数据,当数据超过默认char(255),还要改控制文件

控制文件:

LOAD DATA

INFILE *

INTO TABLE DEPT_02

FIELDS TERMINATED BY ','

(DEPTNO,DNAME char(1000), LOC )

--只认char

BEGINDATA

12,Sales,Virginia

22,Accounting,Virginia

32,Consulting,Virginia

42,Finance,Virginia

在从新导入即可。加油!!!

阅读(2141) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:本机与虚拟机互通

给主人留下些什么吧!~~