利用sqlldr工具進行資料遷移時發現的問題解決方法

paulyibinyi發表於2007-12-29
利用oracle自帶的sqlldr工具從mysql轉到oracle中時,一千萬條的記錄遷移時間只需七,八分鐘左右,真是快啊,但在遷移前也要做好相關的準備工作,下面是我發現的兩個不容易碰到的問題

1.載入clob大型別物件時的問題

當使用sqlldr載入很長的字串(超過4000)到表中的clob型別中時,老是報錯: 資料檔案的欄位超出最大長度.查詢相關資料後得知,sqlldr每次讀入檔案中資料流的資料型別預設為CHAR ,長度為 255 .所以只要超過255字元的段都會報這個錯.解決方法很簡單,在控制檔案中欄位後新增上char(1000000),例如:

LOAD DATA
INFILE *
INTO TABLE DEMO
TRUNCATE
FIELDS TERMINATED BY ','
(d1 ,
d2 char(1000000)
)

其中表demo的列d2是clob型別,當然1000000只是隨便用的一個大數字,只要保證載入的長度不超這個數字就成

2.在匯出文字檔案中,一條記錄多行顯示

load data
infile 'ABC.txt' "str '
'"
continueif last="," //告訴sqlldr在每行的末尾找逗號 找到逗號就把下一行附加到上一行,紅線部分就是需要在控制檔案中加上的語句
into table ABC

fields terminated by ' '
trailing nullcols
(ID,
TITLE_GB2312,
TITLE_BIG5,
TITLE_EN,
COLOR,
SELECT_TYPE,
URL_GB2312,
URL_BIG5,
URL_EN,
CONTENT_GB2312,
CONTENT_BIG5,
CONTENT_EN char(1000000),
FREQUENTLY,
DEFAULT_,
CREATED_DATE,
LAST_MODIFIED_DATE,
STATUS)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7199859/viewspace-62550/,如需轉載,請註明出處,否則將追究法律責任。

相關文章