1
我想在shell腳本中使用SQL加載程序,所以我使用的是命令行參數。我將動態創建控制文件,然後在加載後在腳本中刪除它。我的問題是我的數據文件有回車符,很多記錄被丟棄到.bad。我知道我需要在INFILE指定後使用「str」\ n「」。但我怎麼用命令行來做到這一點?在SQL加載程序中使用回車換行命令行
下面是我的代碼示例。任何幫助是極大的讚賞。
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,它的來源和目的地就在我用Notepad ++做的Windows上查看它時當我選擇顯示EOL符號時,我會在每行的末尾看到CR LF。 – Adil
日誌中的實際拒絕原因是什麼?這些數據從Linux加載成一個製作好的表格。 –
啊..我正在查看我自己的日誌文件,它提供了更少的信息...我看到了什麼問題。我將就這個問題回答我自己的問題。 – Adil