2014-10-03 238 views
-2

我想從txt文件導入數據到表。 TXT文件有5個記錄。 'ext.txt'是我的文件.'IMPORT'是一個目錄。導入csv文件到oracle數據庫

記錄是

7499,ALLEN,SALESMAN,30 
7521,WARD,SALESMAN,30 
7566,JONES,MANAGER,20 
7654,MARTIN,SALESMAN,30 

我想下面的查詢,但其只插入第3的記錄到外部表。

任何人都可以爲我提供此ans解決方案插入所有行的原因。

create table ext_tab (
    empno CHAR(4), 
    ename CHAR(20), 
    job1 CHAR(20), 
    deptno CHAR(2) 
) 
ORGANIZATION EXTERNAL (
TYPE ORACLE_LOADER 
DEFAULT DIRECTORY IMPORT 
ACCESS PARAMETERS (
    RECORDS DELIMITED BY NEWLINE 
    BADFILE IMPORT:'test.bad' 
    LOGFILE IMPORT:'test.log' 
    FIELDS TERMINATED BY ',' (
    empno char(4) , 
    ename char(4), 
    job1 CHAR(20), 
    deptno CHAR(2) 
    ) 
) 
LOCATION (import:'ext.txt') 
) 
PARALLEL 5 
REJECT LIMIT UNLIMITED; 
+1

在導入規範中將'ename char(4),''改爲'ename char(20)''。順便說一句,你可以檢查test.bad文件之前發佈在這裏 – cha 2014-10-03 05:45:47

+0

羽絨被投了兩次問相同的問題https://stackoverflow.com/questions/26173037/insert-data-from-csv-file-to-sql-表 – 2014-10-03 07:27:24

+0

爲什麼投兩個問題?只需關閉最差的一個(在這種情況下,另一個因爲沒有測試數據或工作代碼)。 – Lunc 2014-10-03 08:46:59

回答

0

這會爲你給出的測試數據

CREATE TABLE ext_tab (
    empno VARCHAR(4), 
    ename VARCHAR(20), 
    job1 VARCHAR(20), 
    deptno VARCHAR(2) 
) 
ORGANIZATION EXTERNAL (
    DEFAULT DIRECTORY import 
    ACCESS PARAMETERS (
    RECORDS DELIMITED BY NEWLINE 
    FIELDS TERMINATED BY ',' 
) 
LOCATION ('ext.txt') 
); 

提供您已正確設置了import目錄工作。

測試在11.2.0.4

至於有人在上面的評論中給出的原因。總是首先檢查.bad.log文件(在放置文件的目錄中創建)。這些非常有助於告訴你爲什麼行被拒絕。

我希望你在日誌中這樣的錯誤: -

KUP-04021: field formatting error for field ENAME     
KUP-04026: field too long for datatype        
KUP-04101: record 1 rejected in file /import_dir/ext.txt  
KUP-04021: field formatting error for field ENAME     
KUP-04026: field too long for datatype        
KUP-04101: record 3 rejected in file /import_dir/ext.txt  
KUP-04021: field formatting error for field ENAME     
KUP-04026: field too long for datatype        
KUP-04101: record 4 rejected in file /import_dir/ext.txt  

,只有病房進口,因爲只有他的名字融入CHAR(4)