sql >> データベース >  >> RDS >> Oracle

OracleのファイルからCLOBへのデータのコピー

    ファイルからOracleのCLOBへのデータのコピー

    次のcopy_file_data_to_clob()プロシージャは、ファイルからテキストを読み取り、それをCLOBに格納する方法を示しています。
    作成手順copy_file_data_to_clob(
    p_clob_id INTEGER、
    p_directory VARCHAR2、
    p_file_name VARCHAR2
    )AS
    v_file UTL_FILE.FILE_TYPE;
    v_chars_read INTEGER;
    v_dest_clob CLOB;
    v_amount INTEGER:=32767;
    v_char_buffer VARCHAR2(32767 );
    BEGIN
    -空のCLOBを挿入します
    INSERTINTO clob_content(
    id、clob_column
    )VALUES(
    p_clob_id、EMPTY_CLOB()
    );
    -CLOBのLOBロケーターを取得します
    SELECTclob_column
    INTO v_dest_clob
    FROM clob_content
    WHERE id =p_clob_id
    FOR UPDATE;
    -テキストを読み取るためにファイルを開きます(1行あたり最大v_amount文字)
    v_file:=UTL_FILE.FOPEN(p_directory、p_file_name、'r'、v_amount);
    -コピーファイルからv_dest_clobへのデータを一度に1行
    LOOP
    BEGIN
    -ファイルからv_char_bufferへの行を読み取ります;
    -G ET_LINE()は、新しい行の文字を
    -v_char_buffer
    UTL_FILE.GET_LINE(v_file、v_char_buffer);
    v_chars_read:=LENGTH(v_char_buffer);
    -にコピーしません。 v_dest_clobへの行
    DBMS_LOB.WRITEAPPEND(v_dest_clob、v_chars_read、v_char_buffer);
    -v_char_buffer;
    -newlineのASCII値は10であるため、v_dest_clobにnewlineを追加します。CHR(10 )はnewlineを返します
    DBMS_LOB.WRITEAPPEND(v_dest_clob、1、CHR(10));
    EXCEPTION
    -ファイルにデータがなくなったら、終了します
    WHEN NO_DATA_FOUND THEN
    EXIT;
    END;
    END LOOP;
    -ファイルを閉じます
    UTL_FILE.FCLOSE(v_file);
    DBMS_OUTPUT.PUT_LINE('コピーに成功しました完了しました。');
    END copy_file_data_to_clob;
    /

    1. MySQL:SELECTステートメントでは大文字と小文字が区別されますか?

    2. OracleSQLを使用して区切り文字の位置で文字列を分割する

    3. 例を使用してSQLSELECTの使用方法を学ぶ

    4. PostgreSQLで末尾のスペースをトリミングする