2016-03-30 9 views
0

InformaticaのOracle外部ローダーを使用して、Oracleテーブルに200万レコードをロードしようとしています。データをロードするために、私はテーブルにインデックスをドロップし、データがロードされた後に再作成しようとしています。事前にSQLが動作していないがInformaticaでインデックスを削除する前に

Declare indxcnt int\; 

BEGIN 

    SELECT COUNT(INDEX_NAME) 
    INTO indxcnt 
    FROM all_INDEXES WHERE INDEX_NAME = 'TEST_INDEX1'\; 

    IF indxcnt > 0 THEN 
    Execute Immediate 'DROP INDEX TEST_INDEX1'\; 
    END If \; 
END\; 

をインデックスとしてドロップ取得されていません。私は、ターゲットのマッピングで事前にSQLで以下の無名ブロックを使用しています。

リレーションライターを使用してセッションプロパティで同じ匿名ブロックを使用すると、正常に動作しています。

ローダーを使用してテーブルをロードする際に、インデックスを削除して再作成する方法を教えてください。

答えて

0

実行したいソフトウェアの最後です。 /:

これはPL/SQLで書かれています。私はinformaticaを知らないが、おそらくこれがあなたを助けるかもしれない。

DECLARE 
    indxcnt NUMBER; 
BEGIN 
    -- 
    SELECT COUNT(INDEX_NAME) 
    INTO indxcnt 
    FROM all_indexes WHERE index_name = 'TEST_INDEX1'; 
    -- 
    IF indxcnt > 0 
    THEN 
    EXECUTE IMMEDIATE 'DROP INDEX TEST_INDEX1'; 
    END IF; 
END; 
/
関連する問題