sql >> Database >  >> RDS >> Oracle

Gegevens uit een bestand kopiëren naar een CLOB in Oracle

Gegevens uit een bestand kopiëren naar een CLOB in Oracle

De volgende procedure copy_file_data_to_clob() laat zien hoe u tekst uit een bestand
opslaat in een CLOB:
PROCEDURE MAKEN 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_27 VARCHAR2(3 );
BEGIN
-- voeg een lege CLOB in
INSERT INTO clob_content(
id, clob_column
) VALUES (
p_clob_id, EMPTY_CLOB()
);
-- verkrijg de LOB-locator van de CLOB
SELECT clob_column
INTO v_dest_clob
FROM clob_content
WHERE id =p_clob_id
VOOR UPDATE;
-- open het bestand voor het lezen van tekst (maximaal v_aantal tekens per regel)
v_file :=UTL_FILE.FOPEN(p_directory, p_file_name, 'r', v_amount);
-- kopiëren de gegevens van het bestand in v_dest_clob regel voor regel
LOOP
BEGIN
-- lees een regel uit het bestand in v_char_buffer;
-- G ET_LINE() kopieert het teken van de nieuwe regel niet naar
-- v_char_buffer
UTL_FILE.GET_LINE(v_file, v_char_buffer);
v_chars_read :=LENGTH(v_char_buffer);
-- voeg de regel naar v_dest_clob
DBMS_LOB.WRITEAPPEND(v_dest_clob, v_chars_read, v_char_buffer);
-- voeg een nieuwe regel toe aan v_dest_clob omdat v_char_buffer;
-- de ASCII-waarde voor nieuwe regel is 10, dus CHR(10) ) retourneert nieuwe regel
DBMS_LOB.WRITEAPPEND(v_dest_clob, 1, CHR(10));
UITZONDERING
-- wanneer er geen gegevens meer in het bestand zijn, sluit dan
WANNEER NO_DATA_FOUND THEN
EXIT;
END;
END LOOP;
-- sluit het bestand
UTL_FILE.FCLOSE(v_file);
DBMS_OUTPUT.PUT_LINE('Kopieer succesvol voltooid.');
END copy_file_data_to_clob;
/

  1. Oracle Date datatype, getransformeerd naar 'YYYY-MM-DD HH24:MI:SS TMZ' via SQL

  2. MariaDB JSON_ARRAY_APPEND() uitgelegd

  3. Een ORA - 00907-fout krijgen op het volgende bij ON UPDATE

  4. Hoe CONV() werkt in MariaDB