sql >> Databasteknik >  >> RDS >> Oracle

Kopiera data från en fil till en CLOB i Oracle

Kopiera data från en fil till en CLOB i Oracle

Följande copy_file_data_to_clob()-procedur visar hur man läser text från en fil och
lagrar den i en CLOB:
SKAPA PROCEDUR 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;
V7CHAR_2buffer(3 2CHAR_2buffer) );
BEGIN
-- infoga en tom CLOB
INSERT INTO clob_content(
id, clob_column
) VÄRDEN (
p_clob_id, EMPTY_CLOB()
);
-- hämta LOB-locatorn för CLOB
SELECT clob_column
INTO v_dest_clob
FRÅN clob_content
WHERE id =p_clob_id
FÖR UPPDATERING;
-- öppna filen för läsning av text (upp till v_amount tecken per rad)
v_file :=UTL_FILE.FOPEN(p_directory, p_file_name, 'r', v_amount);
-- copy data från filen till v_dest_clob en rad i taget
LOOP
BEGIN
-- läs en rad från filen till v_char_buffer;
-- G ET_LINE() kopierar inte nyradstecknet till
-- v_char_buffer
UTL_FILE.GET_LINE(v_file, v_char_buffer);
v_chars_read :=LENGTH(v_char_buffer);
-- lägg till rad till v_dest_clob
DBMS_LOB.WRITEAPPEND(v_dest_clob, v_chars_read, v_char_buffer);
-- lägg till en nyrad till v_dest_clob eftersom v_char_buffer;
-- ASCII-värdet för newline är 10, så CHR(10) ) returnerar newline
DBMS_LOB.WRITEAPPEND(v_dest_clob, 1, CHR(10));
UNDANTAG
-- när det inte finns mer data i filen så avsluta
NÄR NO_DATA_FOUND DAN
AVSLUTA;
END;
END LOOP;
-- stäng filen
UTL_FILE.FCLOSE(v_file);
DBMS_OUTPUT.PUT_LINE('Kopiering lyckades avslutad.');
END copy_file_data_to_clob;
/

  1. JPA flush vs commit

  2. Hur man aktiverar Change Data Capture (CDC) på en databas i SQL Server - SQL Server Tutorial

  3. Mysql-rekursion?

  4. Identifiera och hantera uppdragskritiska åtkomstapplikationer under ett utvecklingsprojekt