2012-03-28 21 views
4

Ich habe eine Anforderung zum Aktualisieren einer Tabelle, die etwa 5 Millionen Zeilen hat. Also zu diesem Zweck möchte ich Batch-Anweisungen in Java erstellen und als Massenoperation aktualisieren.JDBC Batch-Erstellung in Sybase

Righht jetzt habe ich 100 Chargen aand es funktioniert fine.But wenn ich die Anzahl der Chargen über hundert erhöhen Ich erhalte eine exceptio wie: com.sybase.jdbc2.jdbc.SybBatchUpdateException: JZ0BE: BatchUpdateException: Fehler beim Ausführen von Stapel Anweisung: Nachricht leer.

Wie kann ich mehr Batch-Anweisungen in meinem CallableStatement-Objekt haben.

Antwort

1

Nicht genug Reputation, um Kommentare zu hinterlassen ... aber welche Art von Anweisungen werden Sie dosieren? Wie viele dieser Zeilen aktualisieren Sie? Hat die Tabelle einen Primärschlüssel? Wie viele Spalten in der Tabelle und wie viele dieser Spalten werden aktualisiert?

Generische Antwort: Das JDBC-Framework in Sybase ist extrem schnell. Sie könnten zumindest in Betracht ziehen, eine einfache Prozedur zu schreiben, die den Primärschlüssel (oder andere) Informationen, die Sie zur Identifizierung der Zeile verwenden, sowie die neuen Werte, auf die die Zeile als Eingabevariablen aktualisiert wird, erhält. Diese Prozedur aktualisiert nur eine einzelne Zeile.

Wrap dieses Verfahren in einem eigenen Java-Methode, die das Callablestatement behandelt, registrieren Sie Ihre aus Fehlernummer und Fehlermeldung params usw.

Dann können Sie eine Schleife durch, was auch immer konstruiert Sie jetzt verwenden Daten zu aktualisieren und Verwenden Sie die gleiche Java-Methode zum Aufrufen der Prozedur, um die Werte Zeile für Zeile zu aktualisieren.

Noch einmal, ich kenne nicht die Menge von dem, was Sie versuchen zu tun ... aber ich weiß, wenn Sie versuchen, einzelne Zeile Updates zu tun, wird dies sehr schnell sein.