我正在嘗試使用SQL加載程序加載數據,但獲取的錯誤率低於此值。SQL加載程序錯誤 - 由於數據錯誤導致行未加載
表被載入 -
CREATE TABLE TEST_PIPE_SEP (FILE_NAME VARCHAR2(3000), KEY_COL VARCHAR2(4000), DESCR VARCHAR2(100), RUN_DATE DATE);
我創建使用殼牌和SED命令,這樣我可以得到當前處理文件,並把它作爲爲FILE_NAME列默認值動態CTL文件。
#!/bin/ksh
echo "starting script"
#cd data
for i in data/Key_Mismatch_Output_UAT*.csv
do
#echo "$i"
filename=`basename "${i}"`
echo "$filename"
#sed '1d' "$i" >> test.csv
sed -e "s/#file_name#/file_name \"${filename}\",/g" test.ctl > new_test_3.ctl
sqlldr ERRORS=100000 userid=$USER_CRED control=new_test_3.ctl data=data/$filename silent=all log=data/$filename".log" bad=data/$filename.bad skip=1
wait
done
echo "ending script"
test.ctl的格式如下里面我是用SED通過當前處理的文件名編輯運行時間 -
LOAD DATA
CHARACTERSET WE8ISO8859P1
APPEND
INTO TABLE TEST_PIPE_SEP
FIELDS TERMINATED BY ','
(
#file_name#
key_col "trim(:key_col)",
descr "trim(:descr)",
run_date "SYSDATE"
)
將後獲得創建新文件SED稱道的是如下 -
LOAD DATA
CHARACTERSET WE8ISO8859P1
APPEND
INTO TABLE TEST_PIPE_SEP
FIELDS TERMINATED BY ','
(
file_name "Key_Mismatch_Output_UAT.csv.20170804070448.1_LIVE.csv.20170804070448.2_20170804070448.csv",
key_col "trim(:key_col)",
descr "trim(:descr)",
run_date "SYSDATE"
)
的CSV文件及其包含 -
Key Columns,Description
"C"|"G000053929"|"ABCD"|"G000053929"|""|""|"TTA"|""|""|""|""|""|"DRR"|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|"",Not Present in file1
"C"|"G000053621"|"HGHQ"|"G000053621"|""|""|"CBI"|""|""|""|""|""|"DRR"|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|"",Not Present in file2
"C"|"G000053929"|"HGHQ"|"G000053929"|""|""|"TTA"|""|""|""|""|""|"DRR"|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|"",Not Present in file2
和我得到以下錯誤,無法找到路徑原因試圖改變CTL文件儘可能卻無法加載數據
Table TEST_PIPE_SEP, loaded from every logical record.
Insert option in effect for this table: APPEND
Column Name Position Len Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
FILE_NAME FIRST * , CHARACTER
SQL string for column : "TRIM('Key_20170804070448.csv')"
KEY_COL NEXT * , CHARACTER
DESCR NEXT * , CHARACTER
RUN_DATE NEXT * , CHARACTER
SQL string for column : "SYSDATE"
Table TEST_PIPE_SEP:
0 Rows successfully loaded.
1 Row not loaded due to data errors.
0 Rows not loaded because all WHEN clauses were failed.
0 Rows not loaded because all fields were null.
請問我是否需要更多的信息。
我使用
Oracle數據庫11g企業版發佈11.2.0.4.0 - 64位生產
感謝您的回覆ETSA。 我嘗試使用CONSTANT關鍵字,但它給了我同樣的錯誤。 如果是的話,您是否可以成功執行該方案?您是否可以提供您使用的CTL文件示例,是的,我修改了CTL結構以添加TRAILING NULLCOLS。 – mradul
@mradul是的,我成功執行。我添加了CTL到我的答案 – etsa
@mradul添加了log ctl和示例數據(你的另一行) – etsa