【问题标题】:Using carriage return line feed in SQL Loader Command Line在 SQL Loader 命令行中使用回车换行
【发布时间】:2016-11-09 01:16:30
【问题描述】:

我正在尝试在 shell 脚本中使用 SQL Loader,因此我使用的是命令行参数。我即时创建控制文件,然后在加载后在脚本中删除它。我的问题是我的数据文件有回车并且很多记录被丢弃到.bad。我知道在指定 INFILE 后我需要使用“str '\n'”。但是我该如何使用命令行呢?

以下是我的代码示例。非常感谢任何帮助。

   LDRFILE=$LOCAL_HOME/data/rmse_loc.ctl
   echo "LOAD DATA " > $LDRFILE
   echo "TRUNCATE "    >> $LDRFILE
   echo "INTO TABLE "R2SCHD.RDF_LOC_HIER"" >> $LDRFILE
   echo "FIELDS TERMINATED BY ',' " >> $LDRFILE
   echo "OPTIONALLY ENCLOSED BY '\"' " >> $LDRFILE
   echo "("  >> $LDRFILE
   echo "LOC, " >> $LDRFILE
   echo "LOC_NAME, " >> $LDRFILE
   echo "DISTRICT, "  >> $LDRFILE
   echo "DISTRICT_NAME, " >> $LDRFILE
   echo "DEFAULT_WH, " >> $LDRFILE
   echo "DEFUALT_WH_NAME, " >> $LDRFILE
   echo "LOC_TYPE, " >> $LDRFILE
   echo "LOC_TYPE_NAME " >> $LDRFILE
   echo ")"  >> $LDRFILE
   sqlldr userid=$CONNECT control=$LDRFILE log=$LOCAL_HOME/log/$PROGRAM_NAME.$INPUT_FILE.$RUN_DATE.log bad=$LOCAL_HOME/error/$PROGRAM_NAME.$INPUT_FILE.$RUN_DATE.bad data=$LOCAL_HOME/data/$INPUT_FILE

以下是数据文件前 5 行的示例,所有行都以 CR/LF 结尾:

34,"34 CARLISLE 67TH ST",3740,"CARLISLE NORTH",6620363,"DDDC REPLENISHMENT",S,"Store"^M
240,"240 FELTWELL SHOP",7614,"UK EAST",2220671,"GDC REPLENISHMENT",S,"Store"^M
5504,"5504 AM CLASS SIX",3720,"SAM S TEXAS",6620363,"DDDC REPLENISHMENT",S,"Store"^M
5827,"5827 JAC CLASS 6",632,"JACKSON/SHAW",9820580,"DDDC REPLENISHMENT",S,"Store"^M
100081,"100081 EGLIN MCS",944,"EGLIN AFB",6620363,"DDDC REPLENISHMENT",S,"Store"^M

【问题讨论】:

  • 数据文件在 UNIX 中具有源和目标,只是当我在 Windows 上使用 Notepad++ 查看它时,当我选择显示 EOL 符号时,我会在每一行的末尾看到 CR LF。
  • 日志中的实际拒绝原因是什么?该数据可以从 Linux 加载到一个组成的表中。
  • 啊..我正在查看我自己的日志文件,它提供的信息较少......我明白了问题所在。我将用这个问题回答我自己的问题。
  • 感谢您的帮助,亚历克斯。

标签: sql oracle sql-loader


【解决方案1】:

问题不在于 CR/LF,而是其中一个列的值太大 :(。业余错误,我是 SQL Loader 的新手,正在查看我自己创建的日志而不是实际的 SQL 日志:

Record 98: Rejected - Error on table R2SCHD.RDF_LOC_HIER, column LOC_NAME.
ORA-12899: value too large for column "R2SCHD"."RDF_LOC_HIER"."LOC_NAME" (actual: 26, maximum: 25)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    • 2012-09-05
    相关资源
    最近更新 更多