2017-08-18 11 views
0

既存のテーブルの値をCSVファイルの値で更新する必要があります。照合は元のCSVファイルでのみ可能です。既存の読み込みプロシージャでは、読み込む必要のある値が解析されません。列xに異なる内容の2つのCSVファイルがあります。 2番目をDBにロードする前に、ファイル2、列xのデータに従ってDBの値を更新して、一致が可能であるようにしたいと考えています。私は単に、テンポラリテーブルに読み込んだutlファイルでCSVファイル2をロードすることはできますか?Oracle 11 pl/sqlがCSVファイルから一時テーブルに値を読み取る

+0

私はそれを実現することなく、この作業を取得しようとしているいくつかの時間を無駄にするので、あなたは、将来的にはこれを見ている人のためだけのノートSQL * Loaderの –

答えて

0

plsqlでファイルを読むためには、次の手順を実行する必要があります。 1. objetディレクトリを作成する必要があります。 ea

create directory dir_tmp as ‘c:\temp’; 
grant read, write on directory dir_tmp to user; 

2.読む。

create or replace procedure reading is 
v_file utl_file.file_type; 
v_line varchar2(1024); 
begin 
v_file := utl_file.fopen (‘DIR_TMP’, ‘test_utl_file.txt’,‘r’); 
loop 
utl_file.get_line (v_file, v_line); 
dbms_output.put_line (v_line); 
end loop; 
utl_file.fclose(v_file); 

exception 
when no_data_found then 
dbms_output.put_line (‘End file’); 
end; 
/

3.いくつかの例外があります。

utl_file.invalid_operation 
utl_file.access_denied 

EROD

+0

を使用することができます:あなたがディレクトリのみで動作することができますoracleを実行しているマシンに対してローカルなファイルが含まれています。これが誰かを助けることを願っています。 –

関連する問題