Fortschrittsanzeige bei Datenübermittlung von MsSQL DB

Status
Nicht offen für weitere Antworten.
B

busa

Gast
Hallo

Ich muss eine grosse Menge an Daten von einer MySQL DB auf meinen Client übertragen. (ca. 100'000 Tupels und mehr). Ich verwende dazu den mysql.jdbc treiber. Meine Frage ist nun: gibt es eine Möglichkeit, z.b mit Hilfe eines Progressbars den Fortschritt der Übermittlung anzuzeigen?

Besten Dank im Voraus

busa
 

DP

Top Contributor
du kennst ja die gesamtmenge an daten. je nach fortschritt entsprecend reagieren...

zu progressbar etc. findest du hier infos oooooohne ende...
 
B

busa

Gast
Ersteinmal danke für die schnelle Antwort.

Leider hilft es mir nicht weiter. JProgressbar kenne ich, und da liegt auch nicht das Poblem. Sondern wie griege ich raus. wieviele Daten bereits übertragen worden sind? und wieviele Daten es insgesammt sind.
Das einzige was ich ja mache ist
Code:
rs = stmt.executeQuery(query);
und während dieser zeit (wo ja die Daten übertragen werden) müsste ich ja den Fortschritt, sprich die bereits übertragenen Daten ermitteln.

gruss busa
 

Bleiglanz

Gesperrter Benutzer
es geht so nicht, weil du die Anzahl der Records nicht kennst

=> du musst zuerst ein count(*) absetzen für deine Query (das sind dann 100%) und dann kannst du ja bei jedem rs.next() ermitteln, wie weit du bist

evtl. mal schauen, ob du über den JDBC Treiber mysql_stmt_num_rows aufrufen kannst
 

busa

Mitglied
Hallo

So, hab das mal gemacht, nur leider scheint es mit MySQL nicht zu funktionieren.

Code:
		stmt.setFetchSize(10);
		rs = stmt.executeQuery(query);
geht auf jedenfall nicht. Die ganzen Tuples werden auf einmal übertragen. Hab noch auf hier auf der Buglist von MySql dot com ein paar gefunden, die das selbe Problem haben. Laut Mysql connector Changelog sollte das Problem ab Version 3.1.7 behoben sein. Doch obwohl ich Version 3.1.8 hab funkioniert es nicht.

Hat jemand noch ne Idee oder einen Workaround?

Besten Dank für eure Hilfe

Gruss busa
 

DP

Top Contributor
jou, ich hab ihn wohl auf die falsche spur gebracht *voll am blamieren hier*.

mach das wie bleiglanz mit dem count(*), ehe du die daten wirklich abholst...
 

busa

Mitglied
also ehrlich gesagt, jetzt blick ich gar nicht mehr durch.

Das mit dem Count hab ich gemacht. dadurch kriege ich auch die zu übertragenden Tuples. Somit hätte ich das Max für den Progressbar ;-)
sobald ich jedoch die eigentliche Query ausführe, werden die ganzen Tuples übertragen, was etwa 30 s geht.
Mit setFetchSize kann man doch festlegen, wieviele tuples auf einmal übertragen wernden, z.b 1000.
Die nächsten 1000 (1001 -2000) werden doch dann erst übertragen, wenn der mit rs.next() auf das erste Tuple des zweiten Packetes zugegfiffen wird.
Obwohl ich jedoch stmt.setFetchsize(1000) gemacht habe, werden nicht nur 1000 Tuples pro Packet, sondern die ganzen übermittelt.

Sorry, aber ich blick nicht ganz durch wie ihr es meint. könntet ih das kurz skizzieren?

Gruss busa
 

AlArenal

Top Contributor
Ja, du stellst ein wieviele auf einmal übertragen werden, das ändert aber nichts an der Größe des ResultSets der DB. Wenn die DB 20.000 Reihen zurückliefert, dann kannste die natürlich auch alle über dein ResultSet ansprechen.

Wie der Treiber im Hintergrund die Daten überträgt (in welchen Blockgrößen) hat damit ja nix zu tun.

Wenn du nur einen gewissen Teil an Daten willst, musst du eben mit LIMIT arbeiten.
 

busa

Mitglied
schade. Das mit dem limit ist leider ziemlich aufwendig, da es sich um eine SQL abfrage handelt, und somit auch LIMIT und OFFSET vorkommen, was man alles berücksichtigen muss. Naja, egal. Dann mach ich halt einen inen Progressbar der sich einfach bewegt, damit die User sehen, dass was passiert.

Besten Dank für eure Hilfe. Ihr seid Spitze

:applaus: :applaus: :applaus: :applaus: :applaus: :applaus: :applaus: :applaus:

Gruss busa
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
mihe7 MSSQL Express als Kommunikationsmedium Datenbankprogrammierung 8
L Oracle Daten von Oracle zu MSSQL übertragen Datenbankprogrammierung 4
J Keine Verbindung zu MSSQL DB mit JDBC Datenbankprogrammierung 3
F MSSql oder MongoDB für die Speicherung von POI Datenbankprogrammierung 9
P Android - MsSQL Datenbankprogrammierung 6
T berechnetes Feld mssql Datenbankprogrammierung 7
M Verbindung mit MSSQL hängt! Datenbankprogrammierung 2
Paristick MSSQL - JDBC Exception beim Registrieren Datenbankprogrammierung 5
S MSSQL JDBC "Driver class not found" Datenbankprogrammierung 9
C [MSSQL] Datenbankverbindung will nicht klappen... Datenbankprogrammierung 2
V MySQL MsSql ohne Server nutzen? Datenbankprogrammierung 2
D MSSQL JDTS JTL Datenabnk Datenbankprogrammierung 7
F MSSQL-Server Verbindung Datenbankprogrammierung 5
B Japanische Zeichen in MSSQL-DB speichern Datenbankprogrammierung 2
B MSSQL und NetBeans IDE 6.8 Datenbankprogrammierung 2
U MSSQL Verbindung steht, aber meckert beim Statement Datenbankprogrammierung 2
H CSV Datei in MSSQL DB oder doch SQL Script Datenbankprogrammierung 11
E MSSQL-Server connection aufbau sehr langsam Datenbankprogrammierung 2
A MSSQL - Datenbank mit Punkt Datenbankprogrammierung 3
A MSSQL - Spalten mit der Option: NULL zulassen Datenbankprogrammierung 2
Landei MsSql Express Server 2008 Datenbankprogrammierung 8
G MSSQL Server SELECT Abfrage funktioniert nicht Datenbankprogrammierung 4
G MSSQL - SQL DriverManager - Funktionen Datenbankprogrammierung 2
W Connect zu MSSQL will einfach nicht Datenbankprogrammierung 3
M Fehler bei der Verbindung zu einer MSSQL/Express Datenbank! Datenbankprogrammierung 17
G MsSQL | Statement.execute(String s) Datenbankprogrammierung 3
M Datum's String in MSSQL oder MySQL wie konvertieren ? Datenbankprogrammierung 3
M Daten von MySQL nach MSSql probleme beim schreiben Datenbankprogrammierung 3
R Hilfe mit Umlauten und MSSQL Datenbankprogrammierung 10

Ähnliche Java Themen


Oben