我有下表:
CREATE TABLE PRODUCTO
(
"clave" NUMBER NOT NULL ENABLE,
"precio" NUMBER(10,2),
"descripcion_prodcto" BLOB
);
该字段descripcion_prodcto
包含一个带有产品描述的 pdf,我需要从 SQL Developer(或任何 sql 编辑器)下载这些 pdf 的路径,文件名包含clave
+ precio
.pdf
大约有500条记录。
我尝试过使用 SQL Developer,但它一次只能下载一个。有谁知道一次下载多个的方法吗?
编辑:
使用以下过程,删除 pdf 文件,但打开它时,它告诉我这是一个错误文件:
DECLARE
l_file UTL_FILE.FILE_TYPE;
l_buffer RAW(32767);
l_amount BINARY_INTEGER := 32767;
l_pos NUMBER := 1;
l_blob BLOB;
l_blob_len NUMBER;
BEGIN
SELECT descripcion_prodcto
INTO l_blob
FROM PRODUCTO
WHERE clave='001';
l_blob_len := DBMS_LOB.getlength(l_blob);
-- Open the destination file.
l_file := UTL_FILE.fopen('RUTA','PRUEBA.pdf','wb',32767);
DBMS_LOB.read(l_blob, l_amount, l_pos, l_buffer);
UTL_FILE.put_raw(l_file, l_buffer, TRUE);
l_pos := l_pos + l_amount;
-- Close the file.
UTL_FILE.fclose(l_file);
END;
使用 Sql Developer 和 Adobe Acrobat 打开 pdf,可以正确看到 pdf。
可能是因为 pdf 包含重音符号并且编码错误?
问题是您只复制文件的前 32767 个字节。您必须使用循环来执行完整复制:
检查这篇文章
http://www.dba-oracle.com/t_read_pdf_file_with_oracle.htm
请记住,PDF 必须是可读的(不同于图像)