我发现使用oracle的pdf文本转换有一些奇怪的行为 bellow是一个sql文件的代码。
create or replace directory pdf_dir as '&1';
create or replace directory l_curr_dir as '&3';
declare
ll_clob CLOB;
l_bfile BFILE;
l_filename VARCHAR2(100) := '&2';
begin
begin
ctx_ddl.drop_policy('test_policy');
exception
when others then
null;
end;
ctx_ddl.create_policy('test_policy','ctxsys.auto_filter');
l_bfile := bfilename('PDF_DIR',l_filename);
dbms_lob.createtemporary(ll_clob, true);
ctx_doc.policy_filter(
policy_name => 'test_policy'
, document => l_bfile
, restab => ll_clob
, plaintext => true
);
ll_clob := REPLACE(TRIM(ll_clob), chr(13), chr(10));
ll_clob := REPLACE(ll_clob, chr(10), chr(32) || '<<EOL>>' || chr(10)||'<<BOL>>');
INSERT into tempclob_op(filename, data) VALUES(l_filename, ll_clob);
DBMS_XSLPROCESSOR.clob2file (ll_clob,'L_CURR_DIR' , 'plaintext.text');
dbms_lob.freeTemporary( ll_clob );
end;
/
问题是我已经为10000个文件运行了这个代码,并且几乎所有文件都提供了正确的结果,但是对于将近10个文件,它会破坏plaintext.text文件中的输出。我不知道为什么会这样?此外,当我为单个文件运行此sql代码时,它给我正确的结果。
答案 0 :(得分:0)
我为每个文件在循环中添加了一些2秒的延迟。并且它似乎奇怪地解决了这个问题..虽然没有具体的答案。