Effizient einfügen mehrerer Datensätze in oracle-db mittels Oracle-client

Habe ich C#-WCF/Winforms-Anwendung.Es fügt plus von 450.000 Datensätze in eine staging-Tabelle in der Oracle-Datenbank mit Oracle-Client-API und eine gespeicherte Prozedur mit einem einfachen insert-Abfrage.
Das dauert etwa 15 Minuten, zum einfügen von Datensätzen in die db und manchmal werden die Datensätze nicht eingefügt zu..geben alle Arten von timeout-Fehler bei der wcf-Seite.
Gibt es eine effiziente Art, das zu tun diese Einsätze?

Vielen Dank für das Lesen.

Hier ist mein code, funktioniert die Batchdatei einfügen:

OracleTransaction tran = null; 
UpdateRowSource oldURS = this.cmd.UpdatedRowSource; 
OracleCommand oldCmd = this.dbAdapter.InsertCommand; 
int oldUBS = this.dbAdapter.UpdateBatchSize; 
try 
{ 
    SetOutputParams(); 
    this.OpenDBConnection(); 
    tran = this.dbConn.BeginTransaction(); 
    this.cmd.Transaction = tran; 
    this.cmd.UpdatedRowSource = UpdateRowSource.OutputParameters; 
    this.dbAdapter.InsertCommand = this.cmd; 
    this.dbAdapter.UpdateBatchSize = size; 
    this.dbAdapter.Update(data); 
    tran.Commit(); 
    SetOutputParamValues(); 
} 
catch (OracleException ex) 
{ 
    if (tran != null) { 
        tran.Rollback(); 
    } 
    throw; 
} 
finally 
{ 
    this.CloseDBConnection(); 
    this.cmd.Parameters.Clear(); 
    this.cmd.UpdatedRowSource = oldURS; 
    this.dbAdapter.InsertCommand = oldCmd; 
    this.dbAdapter.UpdateBatchSize = oldUBS; 
} 

}

in C# verwenden zu werfen und nicht werfen ex oder Ihre StackTrace wird versaut: stackoverflow.com/questions/178456/...
ja, einverstanden, Davide.Ich werfen; statt.Danke.

InformationsquelleAutor user74042 | 2011-10-03

Schreibe einen Kommentar