Oracleディレクトリに外部テーブルを設定しました。データベースインスタンスは12.1.0.2.0、オペレーティングシステムはOracle Linuxです。kup-04040外部テーブルへのアクセス時
oracleユーザーとして/ home/oracleの下に物理ディレクトリを作成しました。私はOracleディレクトリをsysとして作成し、ディレクトリ上のすべてをスキーマユーザに与えました。次に、ファイル "bmw.csv"をディレクトリにコピーしました。ファイルはoracleユーザーが所有しています。
テーブル用のコード:
create table ext_csv_arlista (
Parts_number varchar2(50),
New_Parts_number varchar2(50),
Description varchar2(100),
DE_List_price number(8,2),
Discount_Group varchar2(10),
Purchase_price number(8,2),
BE_sales_price number(8,2)
)
organization external
(
default directory GENCARPARTS_CSV
access parameters
(
records delimited by newline
BADFILE 'ext_csv_arlista.bad'
DISCARDFILE 'ext_csv_arlista.discard'
LOGFILE 'ext_csv_arlista.log'
skip 1
fields terminated by ';' )
location ('bmw.csv')
);
を私はテーブルから選択しよう:
select * from ext_csv_arlista
私は
ORA-29913を取得:ODCIEXTTABLEOPENコールアウトを実行中にエラー ORA -29400:データカートリッジエラー KUP-04040:GENCARPARTS_CSVのファイルbmw.csvが見つかりません
ファイルに「タッチ」して空のファイルから読み取ろうとすると、同じ結果になります。警告:
LOGファイルは03/21/17 22時41分29秒
KUP-05004で開く:選択パラレルではなかったので、イントラ・ソースの同時実行が無効になって
Oracleが含まれているログファイルを作成します要求された。
KUP-04040:見つからない
GENCARPARTS_CSVにbmw.csvファイルこの全体の事は私をエスケープし、ログファイルには、私のためにパスが正しいか、Oracleはディレクトリを書くことができることを意味しています。
のls -l:
[[email protected] g2]$ ls -l
total 25884
-rw-r--r--. 1 oracle oinstall 26499791 Mar 21 16:17 bmw.csv
-rw-r--r--. 1 oracle dba 1940 Mar 21 22:41 ext_csv_arlista.log
[[email protected] g2]$
を確認するには、私は>
declare
v_h utl_file.file_type;
v_l varchar2(600);
begin
v_h:=utl_file.fopen(LOCATION => 'GENCARPARTS_CSV', FILENAME => 'bmw.csv', OPEN_MODE => 'r');
for v_i in 1..5
loop
utl_file.get_line (v_h,v_l);
dbms_output.put_line (v_l);
end loop;
utl_file.fclose(v_h);
end;
UTL_FILEは問題なく成功したUTL_FILEを使用してファイルにアクセスしようとしました。
私には何が欠けていますか?
乾杯
Krisztian