sql >> Database teknologi >  >> RDS >> Oracle

Kopiering af data fra en fil til en CLOB i Oracle

Kopiering af data fra en fil til en CLOB i Oracle

Følgende copy_file_data_to_clob() procedure viser, hvordan man læser tekst fra en fil og
lagrer den i en CLOB:
CREATE PROCEDURE 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(32CHAR_2buffer );
BEGIN
-- indsæt en tom CLOB
INSERT INTO clob_content(
id, clob_column
) VALUES (
p_clob_id, EMPTY_CLOB()
);
-- få LOB-locatoren for CLOB
SELECT clob_column
INTO v_dest_clob
FRA clob_content
WHERE id =p_clob_id
TIL OPDATERING;
-- åbn filen til læsning af tekst (op til v_amount tegn pr. linje)
v_file :=UTL_FILE.FOPEN(p_directory, p_file_name, 'r', v_amount);
-- copy dataene fra filen ind i v_dest_clob én linje ad gangen
LOOP
BEGIN
-- læs en linje fra filen ind i v_char_buffer;
-- G ET_LINE() kopierer ikke den nye linje ind i
-- v_char_buffer
UTL_FILE.GET_LINE(v_file, v_char_buffer);
v_chars_read :=LENGTH(v_char_buffer);
-- tilføj linje til v_dest_clob
DBMS_LOB.WRITEAPPEND(v_dest_clob, v_chars_read, v_char_buffer);
-- tilføj en ny linje til v_dest_clob fordi v_char_buffer;
-- ASCII-værdien for newline er 10, så CHR(10) ) returnerer newline
DBMS_LOB.WRITEAPPEND(v_dest_clob, 1, CHR(10));
EXCEPTION
-- når der ikke er flere data i filen, skal du afslutte
NÅR NO_DATA_FOUND SÅ
AFSLUT;
END;
END LOOP;
-- luk filen
UTL_FILE.FCLOSE(v_file);
DBMS_OUTPUT.PUT_LINE('Kopiering lykkedes afsluttet.');
END copy_file_data_to_clob;
/

  1. 2 måder at returnere rækker, der kun indeholder alfanumeriske tegn i Oracle

  2. Formater SQL-tabeldata som teksttabel

  3. NULL vs. 'uendeligt' i PostgreSQL-områdetyper

  4. Tilbage fra Open World 2013