2012-06-12 50 views
2

我有這樣的界定的文件中添加CLOB列到Oracle數據庫「|」使用SQLLOADER

some varchar text | some varchar text | some varchar text | very long text >3500 

我需要使用sqlloader來上傳這個文件。 表的模式是

Name          Null? Type 
----------------------------------------- -------- ---------------------------- 
NAME         NOT NULL VARCHAR2(100) 
TIME         NOT NULL VARCHAR2(60) 
EXCEPTION        NOT NULL VARCHAR2(300) 
DETAILS           CLOB 

控制文件的內容是

LOAD DATA 
INFILE * 
REPLACE 
INTO TABLE BX_TWISTER_ERRORS 
fields terminated by '|' 
(
    NAME, 
    TIME, 
    EXCEPTION, 
    DETAILS 
) 

,我發現了以下錯誤:

Variable length field exceeds maximum length.

對於每個細節領域。

誰能給上傳使用SQL裝載機這個還挺分隔的文件有任何建議或解決方案?

+1

在這裏看到:http://docs.oracle.com/cd/B10500_01/server.920/a96652/ch07.htm#1006805 –

回答

3

在控制文件只需添加CHAR(10000)礦石所需的大小。

LOAD DATA 
INFILE * 
REPLACE 
INTO TABLE BX_TWISTER_ERRORS 
fields terminated by '|' 
(
    NAME, 
    TIME, 
    EXCEPTION, 
    DETAILS CHAR(10000) 
) 
+0

僅供參考 - SQLLDR的內部字符緩衝區只有255如果你在閱讀數據字段大於你會得到的錯誤。我總是習慣於使用與表匹配的CHAR(X)創建控制文件。其實我有一個函數會從一個表中生成一個框架控制文件,這個文件設置這個文件去除一些繁瑣的工作。我發佈之前:http://stackoverflow.com/a/37947714/2543416 –