blobとしてoracleテーブルにファイルを読み込もうとしています。ファイルは* .gzデータです。私はこれを実行すると、私はこれらのエラーを取得ストアドプロシージャを使用してOracleデータベースにファイルを読み込む方法
create or replace PROCEDURE upload_supp_data IS src_file BFILE; dst_file BLOB; lgh_file BINARY_INTEGER; data_dir varchar2(20) := '/tmp/'; file_name varchar2(50) := '200912020200.rep-ids-top50-sip.txt.gz'; BEGIN src_file := BFILENAME (data_dir, file_name); -- insert a NULL record to lock INSERT INTO alarms_supplemental (alarm_id, resource_id, supplementaldata ) VALUES (13794740, 1, EMPTY_BLOB() ) RETURNING supplementaldata INTO dst_file; -- lock record SELECT supplementaldata INTO dst_file FROM alarms_supplemental WHERE alarm_id = 13794740 FOR UPDATE; -- open the file DBMS_LOB.fileopen (src_file, DBMS_LOB.file_readonly); -- determine length lgh_file := DBMS_LOB.getlength (src_file); -- read the file DBMS_LOB.loadfromfile (dst_file, src_file, lgh_file); -- update the blob field UPDATE ALARMS_SUPPLEMENTAL SET supplementaldata = dst_file WHERE ALARM_ID = 13794740; -- close file DBMS_LOB.fileclose (src_file); END upload_supp_data;
:
ORA-22285: non-existent directory or file for FILEOPEN operation ORA-06512: at "SYS.DBMS_LOB", line 635 ORA-06512: at "AIP_DBA.UPLOAD_SUPP_DATA", line 29 ORA-06512: at line 2 Process exited.
私がプレイした私は、「ネットの周りを見て、いくつかの例を発見し、これは私が作ってみたものです'/ tmp /'、 'tmp'、 '/ tmp'など、さまざまな方法でパスを囲んでいます。ファイル名は正しいので、何が間違っているのか分かりません。これは実際に私が今までに書いた最初のストアドプロシージャなので、これは本当に簡単なことかもしれません。誰かが私にこれを手伝ってくれることを願っている私はOracle SQL Developerを使用しています。
私はあなたの値で例を挙げておくべきです。私の答えを更新させてください。 –
@DCookieが例を挙げました。 –