2016-03-30 8 views
0

Ich versuche, 2 Millionen Datensätze in eine Oracle-Tabelle mit dem externen Oracle Loader in Informatica zu laden. Um die Daten zu laden, versuche ich den Index auf die Tabelle zu legen und neu zu erstellen, nachdem die Daten geladen sind. Ich bin mit dem folgenden anonymen Block in der Pre SQL in Mapping für das Ziel:Informatica pre sql zum Löschen eines Indexes

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\; 

jedoch die Pre SQL nicht funktioniert und als Index wird nicht fallen gelassen zu werden.

Wenn ich den gleichen anonymen Block in den Sitzungseigenschaften mit dem Relation Writer verwende, funktioniert es gut.

Bitte helfen Sie mir, wie Sie den Index löschen und neu erstellen, während Sie den Loader zum Laden der Tabelle verwenden.

Antwort

0

Am Ende der Software, die Sie ausführen möchten. Sie können es tun, indem Sie:

Dies ist in PL/SQL. Ich kenne Informatica nicht, aber vielleicht könnte Ihnen das helfen.

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; 
/
Verwandte Themen