0
おはようございます、私はcsvファイルからテーブルにデータを読み込むことを何度か試みてきましたが、新しいディレクトリを作成する権限がある場合は、オブジェクト。テーブルにcsvファイルをロードする方法
UTL_FILEと外部表の両方でローカルに行いましたが、特別な権限が必要です。
しかし、私はオンラインでやろうとしたときに私はそれらの特権を持っていないことを知ったので、私はそれらなしでそれを行う方法があるかどうか調べたいと思います。
ありがとうございました!
PS:二つのアプローチは次のとおりです。UTL_FILE WITH
CREATE TABLE TEST
(
A varchar2(25);
B number;
)
:
PROCEDURE load AS
F UTL_FILE.FILE_TYPE;
V_LINE VARCHAR2(4000);
v_A varchar2(25);
v_B number;
BEGIN
F := UTL_FILE.FOPEN (<directory>, '<csv file>', 'r');
IF UTL_FILE.IS_OPEN(F) THEN
LOOP
BEGIN
UTL_FILE.GET_LINE(F, V_LINE, 1000);
IF V_LINE IS NULL THEN
EXIT;
END IF;
v_A := REGEXP_SUBSTR(V_LINE, '[^;]+', 1, 1);
v_B := REGEXP_SUBSTR(V_LINE, '[^;]+', 1, 2);
INSERT INTO test(v_A, v_B);
COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
EXIT;
END;
END LOOP;
END IF;
UTL_FILE.FCLOSE(F);
END load;
CREATE TABLE testload
(
A VARCHAR2(25)
B number
)
ORGANIZATION EXTERNAL
(TYPE ORACLE_LOADER
DEFAULT DIRECTORY "PRUEBAS"
ACCESS PARAMETERS
(records delimited by newline
fields terminated by ';'
)
LOCATION
('Log_CSV_REND_SICTG_20170507.csv'
)
)
REJECT LIMIT UNLIMITED ;
を有する外部テーブル
PROCEDURE loadcsv AS
A varchar2(25);
B number;
BEGIN
INSERT INTO test select * testload;
COMMIT;
END loadcsv;
WITH
あなたは必要な権限なしでテーブルにデータを追加することができた場合は、何がそう何あなたが –
できない私は、テーブルにデータを追加することができますが、私ドン、セキュリティ上の脆弱性/ハッキングを悪用されることはありませんディレクトリオブジェクトを作成するのに十分な特権を持っていません –
私はあなたの質問を引用しています "*書き込み権限が必要ですが、オンラインでやりたいときに私はそれらの権限を持っていないことを知りました。彼らなしでそれをする方法があるかどうかを調べる。* " - それは私のコメントを支持する。しかし、そうでない場合は、質問を明確にするために言い直す必要があります。 –