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

Oracle Sqlldr加载含CRLF列的|分隔文件失败,求CTL配置方法

解决SQL*Loader加载含CRLF字段的|分隔文件问题
  • 问题根源:SQL*Loader默认将CR/LF识别为行终止符,导致字段内部的换行被误判为行结束,进而加载失败。SQL Developer能成功导入是因为它支持自动识别多种行终止符(CRLF、CR、LF)并正确解析字段内的换行。

  • CTL文件配置方案:

    1. 指定多类型行终止符
      使用RECORDS DELIMITED BY ANY OF参数,同时匹配CRLF、CR、LF三种行终止符,语法如下:

      RECORDS DELIMITED BY ANY OF x'0D0A' x'0D' x'0A'
      

      其中x'0D0A'对应CRLF,x'0D'对应CR,x'0A'对应LF,ANY OF表示任意一种匹配即视为行结束。

    2. 完整CTL示例
      结合字段分隔符与可选包裹符(如果字段含特殊字符),完整配置如下:

      LOAD DATA
      INFILE 'target_file.txt'
      BADFILE 'target_file.bad'
      DISCARDFILE 'target_file.dsc'
      INTO TABLE your_target_table
      RECORDS DELIMITED BY ANY OF x'0D0A' x'0D' x'0A'
      FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'
      (
        col1 VARCHAR2(100),
        col2 CLOB, -- 存储含换行的长文本用CLOB更稳妥
        col3 NUMBER
      )
      
  • 注意事项:

    • 如果字段内容被双引号等字符包裹,必须添加OPTIONALLY ENCLOSED BY,否则SQL*Loader仍会把包裹内的换行当成行终止符。
    • 对应表字段要选择合适类型,含换行的长文本优先用CLOB,避免VARCHAR2长度不足导致截断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:20:32