2017-01-02 33 views
1

以下是我的表結構和.CTL FILE & .CSV文件在加載數據時總是在第一行出現錯誤&其他數據越來越被加載。如果我在第一條記錄上留下完整的空白行,則會插入所有數據。 你能幫我們解釋爲什麼我在第一張唱片上出現錯誤。SQL LOADER ERROR_0102

TABLE_STRUCTURE

ING_DATA 
(
    ING_COMPONENT_ID NUMBER    NOT NULL, 
    PARENT_ING_ID  NUMBER    NOT NULL, 
    CHILD_ING_ID  NUMBER    NOT NULL, 
    PERCENTAGE    NUMBER(7,4)   NOT NULL 
); 

CTL FILE

LOAD DATA 
INFILE 'C:\Users\pramod.uthkam\Desktop\Apex\Database\SQL LOADER-PROD\ING_COMPONENT\ingc.csv' 
BADFILE 'D:\SQl Loader\bad_orders.txt' 
INTO TABLE ING_data 
FIELDS 
TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
    TRAILING NULLCOLS 
(
ING_Component_ID , 
Parent_ING_ID , 
Child_ING_ID , 
Percentage 
)  

CSV文件

1,3,4,95.0000 
2,3,5,5.0000 
3,6,7,5.0000 
4,6,4,95.0000 
5,18,19,19.0000 
6,18,20,80.0000 
7,18,21,1.0000 
8,34,35,85.0000 

LOG FILE

Record 1: Rejected - Error on table ING_COMPONENT, column ING_COMPONENT_ID. 
ORA-01722: invalid number 


Table ING_COMPONENT: 
    7 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. 

Space allocated for bind array:     66048 bytes(64 rows) 
Read buffer bytes: 1048576 

Total logical records skipped:   0 
Total logical records read:    7 
Total logical records rejected:   1 
Total logical records discarded:  0 

壞文件

1,3,4,95.0000 
+1

您發佈ING_DATA的strucure,但你的CTL是指ING_Component – Aleksej

+0

喜Aleksej 感謝您尋找到它。我已經糾正表名稱從ING_Component到ING_DATA.problem僅預裝了第一行,如果我離開的空行第一行數據正確插入.i已經從SQL服務器導出這些數據並嘗試在Oracle中加載 – Pramod

回答

0

我試圖通過按原樣創建它來加載文件。對我來說它運行良好。所有8行都被加載。沒有問題。我正在嘗試Red Hat Linux。

然後我試了2件事。

dos2unix myctl.ctl

然SQLLDR。所有行都被插入。 然後我嘗試:

unix2dos myctl.ctl

又跑SQLLDR,所有8個記錄被拒絕。所以我相信的是,你的第一條記錄行結束並不是按照你的sqlplus可讀格式。當你手動輸入一個空白行時,你的默認環境(就像在我的UNIX中)創建正確的行結束,並且記錄被讀取。我不確定,但我認爲這是基於我自己的嘗試,如上所述。

所以我們可以說你正在windows中加載這個文件(我認爲這是因爲你的路徑看起來像:))在你的csv文件中,在開始時給一個空行,然後刪除它,並在第一條記錄後做同樣的事情也(在第一條記錄後給出空白行,然後刪除它)。然後再試一次。如果這個問題是我懷疑的,也許它有效。

+0

嗨Rogue編碼器,你在Unix中是正確的,它運行良好,所有記錄都被插入,但是在窗口中,就像你說的第一條記錄行結束可能是不正確的我做了同樣的事情在開始時給一個空行,然後刪除它,然後所有記錄被插入。但仍然我不明白爲什麼第一個記錄不可讀爲sqlplus格式,因爲我直接導出數據從sql server數據庫中查詢到.csv文件。 – Pramod

+0

對不起,沒有SQL Server的經驗,所以無法解釋。 –