我正在尝试在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
我确实知道它必须使用权限执行某些操作,但我是创建该目录的人,所以如果默认设置为这样,我如何授予自己priveleges?有没有办法从PL / SQL执行那种操作?
答案 0 :(得分:3)
尝试这样的事情。
GRANT SELECT, INSERT, UPDATE, DELETE ON emp_load TO NikitaBuriak;
将'NikitaBuriak'替换为您在创建表时使用的ID ..
答案 1 :(得分:2)
您应该为指向您尝试访问的文件的位置中的目录和文件授予所有权限。
例如:如果您尝试超出的文件位于/home/dummy_folder/new_folder/file.txt
那么你应该授予dummy_folder,new folder和file.txt以及