OracleデータベースのCLOBフィールド処理

タイプCLOB列として指定された図1に示すように、挿入される、またはストアドプロシージャを使用することができます

例:

DECLARE

 REALLYBIGTEXTSTRING CLOB:=「塊に挿入する文字列」。

ベギン

   ( 'テスト'、REALLYBIGTEXTSTRING '0')TEST_TABLE値にINSERT。

   コミット;

終わり ;


CLOBに2、BLOB型フィールドデータ

FUNCTIONのblob_to_clob(BLOBにblob_in)RETURNのCLOBをCREATE OR REPLACE

   として

    v_clobのCLOB。

    v_varchar VARCHAR2(32767)。

    V_STARTのPLS_INTEGER:= 1;

    v_bufferのPLS_INTEGER:= 32767;

    tmp_num番号。

    ベギン

        DBMS_LOB.CREATETEMPORARY(v_clob、TRUE)。 

        tmp_num:= CEIL(DBMS_LOB.GETLENGTH(blob_in)/ v_buffer)。

        着信BLOBを防止イニシエータエラーがNULLであるか、または長さがゼロである - tmp_num場合> 0、次いで

          FOR I IN 1..tmp_num

          ループ

            v_varchar:= UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(blob_in、v_buffer、V_START))。 

            DBMS_LOB.WRITEAPPEND(v_clob、LENGTH(v_varchar)、v_varchar)。

             V_START:= V_START + v_buffer。

          END LOOP;

        場合は終了。 

        v_clobを返します。 

    ENDのblob_to_clob。


   変換を完了するために2コールblob_to_clob


 更新gs_gift Pをセットp.description1 = blob_to_clob(p.description)。

 コミット;


3、sqlload大きなフィールド(LOB型)が導入され


https://www.open-open.com/pdf/aab245f2dcdb421f9c98ec00e695b8a6.html



http://blog.itpub.net/31015730/viewspace-2147266



https://blog.csdn.net/u011364306/article/details/50598321(オペレーション参考記事)



1)データは別個のファイルに格納されています


CREATE TABLEをLOBTBL

FILEOWNER VARCHAR2(30)、

FILENAME VARCHAR2(200)、

FILESIZEのNUMBER、

FILEDATA CLOB、

CREATE_DATE DATE

);



[オラクル@癌SQLLDR] $猫ldr_case12_2.dat

2016年1月27日15時21 183オラクル/home/oracle/sqlldr/ldr_case11_1.dat

2016年1月27日15時22分150オラクル/home/oracle/sqlldr/ldr_case11_1.ctl

2016年1月27日15時22分1714オラクル/home/oracle/sqlldr/ldr_case11_1.log

2016年1月27日午後4時05分166オラクル/home/oracle/sqlldr/ldr_case11_2.ctl

2016年1月27日午後4時13分136オラクル/home/oracle/sqlldr/ldr_case11_2.bad

2016年1月27日午後4時13分204のOracle /home/oracle/sqlldr/ldr_case11_2.dat

2016年1月27日午後4時13分1696オラクル/home/oracle/sqlldr/ldr_case11_2.log

2016年1月27日午後04時35 120のOracle /home/oracle/sqlldr/ldr_case11_3.ctl

2016年1月27日16:55 188オラクル/home/oracle/sqlldr/ldr_case11_3.dat

2016年1月27日16:55 1695オラクル/home/oracle/sqlldr/ldr_case11_3.log

2016年1月27日20:15 183オラクル/home/oracle/sqlldr/ldr_case11_4.dat

2016年1月27日20時33分126のOracle /home/oracle/sqlldr/ldr_case11_4.ctl

2016年1月27日20時33分3オラクル/home/oracle/sqlldr/ldr_case11_4.bad

2016年1月27日20時33分1,829オラクル/home/oracle/sqlldr/ldr_case11_4.log

 

- 制御ファイル



- 制御ファイル

[オラクル@癌SQLLDR] $猫ldr_case12_2.ctl

データを読み込む  

INFILEのldr_case12_2.dat  

テーブルにTRUNCATE LOBTBL  

(  

CREATE_DATE位置(1時16分)の日付 'YYYY-MM-DDのHH24:MI'、  

FILESIZE位置(* + 2:23) "TO_NUMBER(:FILESIZE、'99、999,999' )"、  

FILEOWNER位置(* + 2時30分)、  

FILENAME位置(* + 2:68) "SUBSTR(:FILENAME、INSTR(:FILENAME、 '/'、 - 1)+1)"、  

EOF BY TERMINATED FILEDATA LOBFILE(FILENAME)  

SQLLDRは、コマンドを実行し、結果を参照してください


- コマンドを実行しSQLLDR

[オラクル@癌SQLLDR] $のSQLLDRスコット/虎制御= ldr_case12_2.ctl

ロードされるデータは、区切り文字ではなく、固定長文字列は、SQL * Loader制御ファイルの位置キーワード欄の開始位置と終了位置を指定するために使用することができます。位置は、通常、書き込み、以下の3種類があります。


SQL * Loaderの] [SQL * Loaderの実験目的(5) - 加工位置データ書き込みの3種類の固定長文字列

http://blog.itpub.net/20335819/viewspace-698052/


おすすめ

転載: blog.51cto.com/11310506/2431176