You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Loader加载数据报错:5行因数据错误未成功加载求助

解决SQL Loader加载制表符分隔数据时的行错误问题

我来帮你排查这个SQL Loader加载失败的问题。先把你提供的CTL文件和输入文件内容整理出来,方便分析:

你的CTL文件内容

OPTIONS ( ERRORS=405737, SILENT=(ERRORS))
LOAD DATA
INFILE '/home/maliprat/public/RDDH_Extracts/AMER_20171215_EQUITY_ISSUE.dat'
APPEND INTO TABLE ENCORE_APP.TEMP_RDDH_RAW_DATA_ISSUE
FIELDS TERMINATED BY X'9'
TRAILING NULLCOLS (
ISSUE_UBSID "TRIM(:ISSUE_UBSID)",
TEST2 FILLER,
ISSUE_ASSETCLASS "TRIM(:ISSUE_ASSETCLASS)",
ISSUE_ASSETTYPE "TRIM(:ISSUE_ASSETTYPE)",
ISSUE_SECURITYTYPE "TRIM(:ISSUE_SECURITYTYPE)",

输入文件的关键内容

输入文件第一行是表头,后续是数据行:

issue.ubsId issue.majorVersion issue.assetClass issue.assetType issue.securityType issue.active issue.lastUpdatedTime event.majorVersion event.lastUpdatedTime issue.status issue.isoCfi issue.isin issue.nominalCurrency issue.nominalValueOfUnit issue.issueName issue.regSInd issue.rule144AInd issue.securityFormType issue.bbSecurityType issue.cusip issue.common issue.cins issue.valoren issue.wertpapier issue.ubsTradable issue.restrictedListCode issue.restrictedOffTime issue.restrictedOnTime
0200200307 13 EQUITY STOCK Common Stock 1 20171203120808000 15 20171203120810000 ACTIVE ES---- SE0005994001 XXX -9999.0 RLS GLOBAL PAID SUB -9999 -9999 UNKNOWN Common Stock 107404309 W7753D159 24542360 -9999 -9999 -9999 -9999 -9999.0 -9999.0 -9999 -9999.0 -9999 -9999 0 SS KA -9999 2 -9999.0 -9999 -9999 -9999 -9999 -9999 4 20150316054137973 0 -9999 -9999 0 -9999 0 0 -9999 9668256 2735465 -9999.0 -9999 -9999 -9999.0 -9999.0 -9999 -9999 -9999.0

可能的错误原因及解决方法

  • 表头行被当作数据加载:输入文件第一行是列名(比如issue.ubsId),但你的CTL没有跳过这一行,SQL Loader会尝试把这些字符串塞进目标表的字段(比如ISSUE_UBSID如果是数字类型,肯定会报错)。这大概率是导致至少1行错误的原因。
    解决:在LOAD DATA之后添加SKIP=1,跳过表头行:

    LOAD DATA
    INFILE '/home/maliprat/public/RDDH_Extracts/AMER_20171215_EQUITY_ISSUE.dat'
    SKIP=1 -- 新增这一行,跳过表头
    APPEND INTO TABLE ENCORE_APP.TEMP_RDDH_RAW_DATA_ISSUE
    
  • 字段列表末尾的多余逗号:你的CTL里ISSUE_SECURITYTYPE "TRIM(:ISSUE_SECURITYTYPE)",最后有个逗号,虽然SQL Loader可能容忍,但最好去掉,避免潜在的语法问题。

  • 字段类型不匹配:比如目标表中ISSUE_UBSID是NUMBER类型,但如果某些数据行里的对应值不是数字(除了表头),或者字段长度不够(比如字符串字段长度小于输入内容),都会导致加载失败。
    解决:一定要查看SQL Loader生成的日志文件(和CTL同名的.log文件),里面会详细标注哪一行、哪个字段出错,比如是"数据类型转换错误"还是"字段长度超出",根据日志来调整字段定义或者数据内容。

  • FILLER字段的位置是否正确:你定义了TEST2作为FILLER,对应输入文件的第二列(issue.majorVersion),这个没问题,但要确保后续字段的位置和输入列一一对应,如果输入列顺序变了,也会导致错误。

修改后的完整CTL示例

OPTIONS ( ERRORS=405737, SILENT=(ERRORS))
LOAD DATA
INFILE '/home/maliprat/public/RDDH_Extracts/AMER_20171215_EQUITY_ISSUE.dat'
SKIP=1
APPEND INTO TABLE ENCORE_APP.TEMP_RDDH_RAW_DATA_ISSUE
FIELDS TERMINATED BY X'9'
TRAILING NULLCOLS (
ISSUE_UBSID "TRIM(:ISSUE_UBSID)",
TEST2 FILLER,
ISSUE_ASSETCLASS "TRIM(:ISSUE_ASSETCLASS)",
ISSUE_ASSETTYPE "TRIM(:ISSUE_ASSETTYPE)",
ISSUE_SECURITYTYPE "TRIM(:ISSUE_SECURITYTYPE)"
)

最后再提醒下,SQL Loader的日志文件是排查这类错误的核心,一定要优先查看它的详细报错信息,能帮你精准定位问题。

内容的提问来源于stack exchange,提问作者Suyash Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:23:08