首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用SQL Loader避免重复行

使用SQL Loader避免重复行
EN

Stack Overflow用户
提问于 2013-10-15 00:16:39
回答 1查看 7.1K关注 0票数 0

我使用SQL*Loader将文件中的大量数据加载到数据库中的表中。我的控制文件是:

代码语言:javascript
运行
复制
OPTIONS (DIRECT=FALSE)
LOAD DATA
INFILE *
BADFILE *                                                          
APPEND                                         
INTO TABLE TDE_MIDINERO            
(                                               
    ACTIVA  POSITION(1:20) CHAR(20),         
    TIPUSACT POSITION(21:21) CHAR(1),        
    IMPREINT POSITION(22:32) DECIMAL EXTERNAL(11) ":IMPREINT/100",
    NUMREINT POSITION(33:37) INTEGER EXTERNAL,
    REINTEGROS_MES1 POSITION(38:48) DECIMAL EXTERNAL(11) ":REINTEGROS_MES1/100",
    REINTEGROS_MES2 POSITION(49:59) DECIMAL EXTERNAL(11) ":REINTEGROS_MES2/100",
    REINTEGROS_MES3 POSITION(60:70) DECIMAL EXTERNAL(11) ":REINTEGROS_MES3/100",
    REINTEGROS_MES4 POSITION(71:81) DECIMAL EXTERNAL(11) ":REINTEGROS_MES4/100",
    REINTEGROS_MES5 POSITION(82:92) DECIMAL EXTERNAL(11) ":REINTEGROS_MES5/100",
    REINTEGROS_MES6 POSITION(93:103) DECIMAL EXTERNAL(11) ":REINTEGROS_MES6/100",
    REINTEGROS_MES7 POSITION(104:114) DECIMAL EXTERNAL(11) ":REINTEGROS_MES7/100",
    REINTEGROS_MES8 POSITION(115:125) DECIMAL EXTERNAL(11) ":REINTEGROS_MES8/100",
    REINTEGROS_MES9 POSITION(126:136) DECIMAL EXTERNAL(11) ":REINTEGROS_MES9/100",
    REINTEGROS_MES10 POSITION(137:147) DECIMAL EXTERNAL(11) ":REINTEGROS_MES10/100",
    REINTEGROS_MES11 POSITION(148:158) DECIMAL EXTERNAL(11) ":REINTEGROS_MES11/100",
    REINTEGROS_MES12 POSITION(159:169) DECIMAL EXTERNAL(11) ":REINTEGROS_MES12/100",
    ACUMULADO POSITION(170:182) DECIMAL EXTERNAL(13) ":ACUMULADO/100",
    IMPMAX POSITION(183:195) DECIMAL EXTERNAL(13) ":IMPMAX/100",
    IMPLIMIT POSITION(196:208) DECIMAL EXTERNAL(13) ":IMPLIMIT/100",
    DATULTM sysdate,
    CAJERO POSITION(209:213) INTEGER EXTERNAL,
    DATUDIA POSITION(214:222) INTEGER EXTERNAL,
    DATUMES POSITION(223:231) INTEGER EXTERNAL
) 

字段Activa是主键。我的问题是SQL*Loader不能防止具有相同主键的重复记录。

如何避免这种情况?我的表有很多重复的记录,它的索引被破坏了。在将它们插入到表中之前,有没有什么方法可以丢弃它们(或者将它们放在一个错误的文件中)?

提前谢谢你

EN

回答 1

Stack Overflow用户

发布于 2013-10-15 04:22:03

如果在要加载到的表上创建primary key约束,则在第一个记录之后的给定键值的重复记录将被丢弃到坏文件中。只需将errors参数设置为一个较高的值,这样导入就不会在发生50个错误后停止。

当然,这是一种粗糙的处理重复数据的方法:或者,您可以将所有记录加载到一个临时表中,然后使用SQL查询对它们进行重复数据删除。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19364610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档