使用sqlloader向oracle匯入文字資料

kisslfcr發表於2016-08-19
文字檔案如下,注意檔名必須有字尾,文字行首也需要|分隔符:
[oracle@ycr test]$ more person.txt
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m
|aaa|123|m


建立表:
SQL> create table person (name varchar2(6),num varchar2(5),gender varchar2(3));
Table created.


編寫控制檔案input.ctl:
OPTIONS (skip=1)
LOAD DATA
INFILE "person.txt"
truncate
INTO TABLE person -- 要插入記錄的表
Fields terminated by "|"
trailing nullcols --表的欄位沒有對應的值時允許為空
(
    virtual_column FILLER, --這是一個虛擬欄位,用來跳過由 PL/SQL Developer 生成的第一列序號
    name,
    num,
    gender
)


匯入:
sqlldr test/oracle@ycr2 control=input.ctl

另外如果實際列中比平面檔案中列數多,可在控制檔案最後多餘的列明,比如表中有日期列,但平面檔案中沒有,可在控制檔案列明的最後一條加上如下:
XXXXX     char "trunc(sysdate)"
表示插入當前日期

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

相關文章