1. ホーム
  2. oracle

[解決済み] ORA-29913: Oracle に csv を挿入する際の ODCIEXTTABLEOPEN コールアウトの実行でエラーが発生しました。

2022-02-03 01:16:03

質問内容

PL/SQLでこのコードを実行しようとしています。

create or replace directory ext_tab_dir as 'C:/mydir';
GRANT READ,WRITE ON DIRECTORY ext_tab_dir TO PUBLIC;
DROP TABLE emp_load;
CREATE TABLE emp_load (v1 VARCHAR2(4000), 
                        v2 VARCHAR2(4000) 
                        )
   ORGANIZATION EXTERNAL (
     TYPE ORACLE_LOADER DEFAULT DIRECTORY ext_tab_dir
     ACCESS PARAMETERS (
     RECORDS DELIMITED BY NEWLINE
     BADFILE ext_tab_dir:'bad.bad'
     LOGFILE ext_tab_dir:'log.log'
     FIELDS TERMINATED BY ','         
     )
     LOCATION ('testfile.csv')
   ); 
--   INSERT INTO tablename(v1,v2)
   SELECT * From emp_load    

と表示され、次のようなエラーが発生します。

ORA-29913: error in executing ODCIEXTTABLEOPEN callout    
ORA-29400: data cartridge error error opening file C:/mydir/log.log

パーミッションが関係しているのはわかるのですが、そのディレクトリを作ったのは私なので、デフォルトでこのように設定されている場合、どうやって自分にパーミッションを与えるのでしょうか?PL/SQLからそのような操作を行う方法はあるのでしょうか?

解決方法は?

こんな感じで試してみてください。

GRANT SELECT, INSERT, UPDATE, DELETE ON emp_load TO NikitaBuriak;

NikitaBuriak'をテーブル作成時に使用したIDに置き換えてください。