CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他数据库开发 >  SQL Anywhere Studio

有谁用过sqlldr,有一个问题请教

楼主dynku(随风来去.cn)2002-03-29 00:40:55 在 其他数据库开发 / SQL Anywhere Studio 提问

为什么我在oracle734中建了一个表like  
  create   table   aaa   (a   char(1),b     char(2),c   char(3),primary   key(b,c));  
   
  然后我用sqlldr   插入这么一行     1,2,3  
  发现可以连续插入两次,第三次就不能插入了  
   
  select   *   from   aaa;  
   
  发现有两条一样的记录  
  而且delete不了  
   
  这是为什么????????? 问题点数:50、回复次数:19Top

1 楼KingSunSha(弱水三千)回复于 2002-03-29 00:55:42 得分 30

果然?  
  当真?  
  不可能吧?表里有怎么样的纪录?Top

2 楼dynku(随风来去.cn)回复于 2002-03-29 08:32:10 得分 0

select   出来如下  
  a       b       c  
  1       2       3  
  1       2       3Top

3 楼mycode(不写代码)回复于 2002-03-29 08:46:44 得分 0

primary   key(b,c)  
  检查一下,b,c字段的长度,空格在前或在后。  
  按理说不应该出现这样的数据。Top

4 楼dynku(随风来去.cn)回复于 2002-03-29 08:49:09 得分 0

delete   from   aaa  
                          *  
  ERROR   at   line   1:  
  ORA-01502:   index   'CCS.SYS_C0018012'   is   in   direct   load   state  
  Top

5 楼thingsfly(随风)回复于 2002-03-29 09:29:51 得分 20

你先把主键索引SYS_C0018012删除,  
  然后再添加,或者是重建你的主键索引吧!!  
  Top

6 楼dynku(随风来去.cn)回复于 2002-03-29 12:38:29 得分 0

对oracle知道太少,:((  
   
  可是我不能理解,这两个数据怎么添进去的那?Top

7 楼thingsfly(随风)回复于 2002-03-29 12:52:30 得分 0

这两条数据是ORACLE直接写到数据文件里的。  
  它没有经过INSERT语句。Top

8 楼Tsiah(网络一次元)回复于 2002-03-29 12:56:26 得分 0

SQLLDR怎么用啊Top

9 楼KingSunSha(弱水三千)回复于 2002-03-29 16:19:16 得分 0

你在用SQLLDR的时候采用了DIRECT   LOAD模式,这种模式下为了提高INSERT的速度,会先把INDEX   DISABLE,所以1、唯一性检查失效   2、索引还处在DISABLED状态,无法访问  
  解决方法:  
  DROP   INDEX   SYS_C0018012;  
  DELETE   FROM   AAA;  
  ...  
  ALTER   TABLE   AAA   ADD   CONSTRAINT   ....;Top

10 楼dynku(随风来去.cn)回复于 2002-03-29 17:12:11 得分 0

我drop   index   的时候  
  提示  
  ORA-02429:   cannot   drop   index   used   for   enforcement   of   unique/primary   key  
  Top

11 楼dynku(随风来去.cn)回复于 2002-03-29 17:13:05 得分 0

多谢各位指导:)Top

12 楼KingSunSha(弱水三千)回复于 2002-03-29 17:45:57 得分 0

ALTER   TABLE   AAA   DROP   PRIMARY   KEY   MY_KEY;Top

13 楼xinpingf(白开心)回复于 2002-03-29 18:23:33 得分 0

索引是主键上带的,当然不能drop  
  把主键dropk就行了Top

14 楼dynku(随风来去.cn)回复于 2002-03-30 00:16:23 得分 0

理解  
  上班了就去试试Top

15 楼dynku(随风来去.cn)回复于 2002-04-01 12:05:17 得分 0

现在把主键drop了  
  但是再  
  alter   table   producer   add   constraints   k_producer   primary   key(cbicerty,cbicerno)  
   
  提示ORA-02437:   cannot   enable   (CCS.K_PRODUCER)   -   primary   key   violated  
   
  这是为什么那?  
  这个k_producer   已经被我drop了啊Top

16 楼KingSunSha(弱水三千)回复于 2002-04-01 13:52:06 得分 0

那是因为你的表中有重复纪录,无法通过主键校验,所以你先要删除重复的纪录。其实你例子这么简单,直接把两条纪录删掉就行了。Top

17 楼dynku(随风来去.cn)回复于 2002-04-01 17:10:24 得分 0

呵呵,只是一个简单的例子  
  实际上的表复杂多了  
  贴出来费劲点Top

18 楼realcedar(void)回复于 2002-04-01 17:21:19 得分 0

sqlldr用来一条一条插纪录?太浪费了吧!Top

19 楼realcedar(void)回复于 2002-04-01 17:22:03 得分 0

sqlldr用来一条一条插纪录?太浪费了吧!Top

20 楼dynku(随风来去.cn)回复于 2002-04-02 00:34:05 得分 0

作测试么  
  如果不能检测出重复的  
  数据多了怎么办Top

相关问题

  • sqlldr为何不好用啊?
  • PL/SQL 能不能调用SQL LOADER(sqlldr)?
  • SOS:怎样用sqlldr倒入指定列的数据
  • SQLLDR的问题
  • sqlldr求救
  • sqlldr的control文件中为什么不能使用函数?50分
  • sqlldr导入数据
  • 使用sqlldr 在oracle7和oracle8i之间导数据时碰到日期格式的问题?
  • 利用oracle的sqlldr倒数据时如果出现错误时,如何实现数据库的自动回滚,该如何设置啊,谢谢!!
  • 用sqlldr导入文本文件,如何在源txt的第一行数据之前放字段名,同时使log文件不报错?

关键词

  • 数据
  • oracle
  • sqlldr
  • 纪录
  • 索引
  • aaa
  • drop
  • 键
  • 主键
  • 插入

得分解答快速导航

  • 帖主:dynku
  • KingSunSha
  • thingsfly

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo