2016-06-23 15 views
-2

Ich versuche, eine csv Datei in Oracle-Server über sqlldr für meine Batch-Datei-Automatisierung hochladen. Es dauert zu lange, die Datei mit sqlldr auf den Oracle-Server hochzuladen. Über Batch lädt es 2100 Zeilen in einer Minute hoch. Wenn ich versuche, Daten direkt aus der csv-Datei von Oracle SQL Developer zu importieren, dauert es 100000 Zeilen pro Minute.Wie kann die SQLLDR-Leistung verbessert werden?

Das ist meine .ctl Datei:

OPTIONS(SKIP=1)                
LOAD DATA                    
INFILE "D:\\TestBackup\Event.csv"         
INSERT into table EVENT               
APPEND                    
fields terminated by ',' OPTIONALLY ENCLOSED BY '"'        
TRAILING NULLCOLS   
(BRANCH_ID,TOTAL_SALES,TOTAL_LOST_SALES,TOTAL_INVENTORY,INSERTDATE sysdate 
) 

Das ist meine .bat Datei:

sqlldr [email protected]/demo1 DATA='D:\Event.csv"  
CONTROL=D:\Insert.ctl LOG=Insert.log BAD=Insert.bad          

Wie um die Leistung zu verbessern?

+0

Ist das Zitat korrekt im Befehl 'sqlldr' oder wurde es nicht korrekt eingefügt? – Glenn

+0

Haben Sie sich die Dokumentation angesehen? Sie sollten in Erwägung ziehen, BINDSIZE und/oder READSIZE zu ändern. [Und siehe das] (https://docs.oracle.com/cd/E11882_01/server.112/e22490/ldr_control_file.htm#SUTIL1135). –

+0

Versuchen Sie einige Änderungen in BINDSIZE Wert und Geschwindigkeit bis zu 12 mal jetzt die Einfügerate beträgt 400 Zeilen/Sek. Irgendeine Idee, um 1000 Reihen/sek zu erhöhen. Danke –

Antwort

1

Sie können die Anweisung alter table verwenden, um die Protokollierung der Tabelle während des Ladevorgangs zu deaktivieren. Es wäre interessant, den Unterschied mit und ohne Protokollierung zu sehen. Hat die Tabelle Trigger, die ebenfalls ausgesetzt werden können? Vielleicht Indizes vor dem Laden fallen lassen und danach neu erstellen, anstatt sie während des Ladens zu aktualisieren?

Nur einige Ideen, die die Dinge ein wenig beschleunigen können. Bitte berichten Sie, was, wenn überhaupt, funktioniert. Ich freue mich darauf zu sehen, was den größten Nutzen bringt.

+0

Es läuft gut auf dem Server. Erstens führe ich das von lokalen dafür braucht es zu viel Zeit. Jetzt dauerte es 3 Minuten für Millionen Zeilen –

Verwandte Themen