測試TOM=SQLLDR載入內嵌換行符資料

oracle_db發表於2012-05-14
換行符是SQLLDR預設的行結束符號,在ORACLE816以後可以實現載入資料中帶有換行行的資料。基本原則就是用一個非換行符的其它字元表表示資料中的換行符號。

測試:
會話1:修改測試表結構,建立如下控制檔案

SQL> alter table dept_load add comments varchar2(4000);

Table altered.

SQL> desc dept_load;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 DEPTNO                                             NUMBER(2)
 DNAME                                              VARCHAR2(14)
 LOC                                                VARCHAR2(13)
 ENTIRE_LINE                                        VARCHAR2(29)
 LAST_UPDATED                                       DATE
 COMMENTS                                           VARCHAR2(4000)

SQL> 

[oracle@oraclelinux ~]$ cat dept_load14.ctl
LOAD DATA
INFILE *
INTO TABLE DEPT_LOAD
REPLACE
FIELDS TERMINATED BY ','
TRAILING NULLCOLS
(DEPTNO,
DNAME "upper(:dname)",
LOC "upper(:loc)",
COMMENTS "replace(:comments,'\\n',chr(10))"==\\n是用來替換換行符的
)
BEGINDATA
10,Sales,Virginia,This is the Sales\nOffice in Virginia
20,Accounting,Virginia,This is the Accounting\nOffice in Virginia
30,Consulting,Virginia,This is the Consulting\nOffice in Virginia
40,Finance,Virginia,This is the Finance\nOffice in Virginia
[oracle@oraclelinux ~]$ 

會話1:載入資料
oracle@oraclelinux ~]$ sqlldr userid=scott/scott control=dept_load14.ctl

SQL*Loader: Release 10.2.0.1.0 - Production on Mon May 14 14:38:56 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Commit point reached - logical record count 4
SQL> select deptno,dname,comments from dept_load;

    DEPTNO DNAME          COMMENTS
---------- -------------- --------------------
        10 SALES          This is the Sales
                          Office in Virginia

        20 ACCOUNTING     This is the Accounti
                          ng
                          Office in Virginia

        30 CONSULTING     This is the Consulti
                          ng
                          Office in Virginia


    DEPTNO DNAME          COMMENTS
---------- -------------- --------------------
        40 FINANCE        This is the Finance
                          Office in Virginia
測試結束

除了以下的方法外,可以用SQLLDR的FIX屬性,前提是輸入資料必須出現在定長記錄中。
還有利用SQLLDR的VAR屬性,使用這種格式時,每個記錄必須以某個固定的位元組數開始,這表示這個記錄的總長度。
還有一種就是使用SQLLDR的STR屬性,這可以用來指定一個新的行結束符號,這種情況下行結束處的換行符號對使用者不在特殊。此時可以把它當成普通符號。





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

相關文章