Sao chép dữ liệu từ tệp vào CLOB trong Oracle
Thủ tục copy_file_data_to_clob () sau đây cho biết cách đọc văn bản từ một tệp và
lưu trữ nó trong CLOB:
TẠO QUY TRÌNH 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
- chèn CLOB
INSERT rỗng VÀO clob_content (
id, clob_column
) VALUES (
p_clob_id, EMPTY_CLOB ()
);
- lấy bộ định vị LOB của CLOB
SELECT clob_column
INTO v_dest_clob
FROM clob_content
WHERE id =p_clob_id
FOR UPDATE;
- mở tệp để đọc văn bản (tối đa v_ số lượng ký tự trên mỗi dòng)
v_file:=UTL_FILE.FOPEN (p_directory, p_file_name, 'r', v_amount);
- sao chép dữ liệu từ tệp vào v_dest_clob từng dòng một
LOOP
BEGIN
- đọc một dòng từ tệp vào v_char_buffer;
- G ET_LINE () không sao chép ký tự dòng mới vào
- v_char_buffer
UTL_FILE.GET_LINE (v_file, v_char_buffer);
v_chars_read:=LENGTH (v_char_buffer);
- chắp thêm dòng tới v_dest_clob
DBMS_LOB.WRITEAPPEND (v_dest_clob, v_chars_read, v_char_buffer);
- thêm một dòng mới vào v_dest_clob vì v_char_buffer;
- giá trị ASCII cho dòng mới là 10, do đó CHR (10 ) trả về dòng mới
DBMS_LOB.WRITEAPPEND (v_dest_clob, 1, CHR (10));
EXCEPTION
- khi không còn dữ liệu trong tệp thì thoát ra
KHI KHÔNG CÓ_DATA_FOUND THÌ
EXIT;
END;
END LOOP;
- đóng tệp
UTL_FILE.FCLOSE (v_file);
DBMS_OUTPUT.PUT_LINE ('Sao chép thành công đã hoàn thành. ');
HẾT bản sao_tập_dữ_liệu_to_cấp;
/
-
kiểm tra xem đó có phải là một hàm số trong Oracle không
-
Điều chỉnh hiệu suất PL / SQL cho các truy vấn ký tự đại diện LIKE '% ...%'
-
Cách ghi vào tệp CSV bằng Oracle SQL * Plus
-
Cách sử dụng kiểu BOOLEAN trong câu lệnh SELECT
-
Có một pragma PL / SQL tương tự như DETERMINISTIC, nhưng cho phạm vi của một SQL SELECT duy nhất không?