Komplexer Tabellen-Join und Ausgabe in Excel

Fleur de Soleil

Aktives Mitglied
Hallo zusammen,

ich hab ein größeres Problem, bei dem ihr mir hoffentlich weiterhelfen könnt. Habe mehr oder weniger zwei Fragen:

1. Wenn ich über JDBC ein komplexes JOIN-Statement an meine Datenbank schicke, wird der JOIN dann auf dem lokalen Rechner oder auf dem Datenbankserver ausgeführt?

2. Mit Hilfe von APIs wie JExcelAPI oder POI lassen sich Daten ja ganz gut nach Excel exportieren. Kann ich da auch gleich ein Resultset exportieren oder welche "Form" eignet sich dafür am besten??

LG Fleur
 

rhoermann

Mitglied
1. das Statement wird immer DB seitig ausgeführt. Wenn du mit z.B Hibernate arbeitest wären am Client noch Optimierungen möglich, aber die abgesetzten Statements werden immer von der DB ausgewertet.

2. Ich denke nicht, daß POI oder JExcelAPI einen Adapter für ResultSet haben, aber wenn ja, dann kannst du natürlich diese verwenden.

Ansonsten bleibt es dir überlassen wie das Ausgabeformat aussehen soll. Eine Tabelle oder Formular Style, mit oder ohne Grafiken....

Einfach das ResultSet iterieren und mit entsprechenden get Aufrufen die Daten pro row auslesen. Und einfach die Daten mit POI oder JExcelAPI schreiben.
 

Fleur de Soleil

Aktives Mitglied
Hallo und danke ;)

Hört sich ja schon einmal gut an, dass die Berechnungen auf der Datenbank selbst ausgeführt werden. Hatte es mir schon fast gedacht, weil der lokale Rechner wohl sehr schnell an seine Grenzen stoßen würde. Mit Hibernate kenne ich mich leider nicht wirklich aus, aber werde ich mich wohl einlesen müssen, da ich jede Optimierungsmöglichkeit nutzen muss, soll so performant wie möglich werden.

LG Fleur
 

ARadauer

Top Contributor
Mhn ob jetzt Hibernate besser als ich fähig ist mir einen komplexen Join zu optimieren, das bezweifle ich.
Überhaupt bei vorhandenen Datenbanken.. nimmt es da Rücksicht auf indizes usw?

Ich würde bewusst bei gewissen Reporting oder Batch Themen auf Hibernate verzichen da ich mit plain jdbc besser optimieren kann.
 

Fleur de Soleil

Aktives Mitglied
Hi ARadauer,

du sprichst mir aus meinem Herzen :D Wäre sehr gut, wenn ich plain jdbc nutzen könnte, weil ich mich da mehr oder weniger auskenne und mich nicht komplett neu einlesen müsste. Und was der Kern meiner Aufgabe ist hast du anscheinend auch erkannt. Es handelt sich um BATCH-Verarbeitungen die Auswertungen von Datenbankdaten in Excel erzeugen sollen.

LG Fleur
 

rhoermann

Mitglied
Ich hätte dir nicht empfohlen Hibernate zu verwenden, und Hibernate tuned ein Statement wohl nicht schneller als ein Entwickler der mit Optimierungstechniken vertraut ist! Ich meinte nur, das mit Hibernate diverse Optimierungen möglich wären, weil Hibernate da etwas mehr anbietet. Aber schneller wird die Auswertung dadurch nicht. Hibernate war ja auch nur ein Beispiel. Da sind andere ORMapper nicht gravierend anders.

Dein Problem ist mit direkter JDBC Verwendung ohne Probleme zu lösen. Klang ja nicht so als bräuchtest du Connection Pooling, Caching, usw.

Also einfach ein PreparedStatement absetzen, die Rows durchgehen und dein Excel erstellen. Das sollte in wenigen Minuten laufen!
 

ice-breaker

Top Contributor
da ich jede Optimierungsmöglichkeit nutzen muss, soll so performant wie möglich werden.

dann solltest du dich mit Datenbankoptimierung beschäftigen und nicht ob Hibernate oder sonstwer schneller ist. Eine schnellere Library kann dir vllt einen maximalen Performanceschub von 100% bringen, die Datenbankoptimierung aber locker den 100 fachen Wert, wenn du irgendwo "Fehler" im Design der Datenbank gemacht hast und dann wirklich komplexe Abfragen machst.
 

Fleur de Soleil

Aktives Mitglied
Ihr seid der Hammer, danke für die vielen verschiedenen Meinungen.

Kurze Frage noch, gibt es eine Möglichkeit, aus Java heraus, eine Temp Table auf meiner DB zu erzeugen und mit der weiter zu arbeiten??

LG Fleur
 

ARadauer

Top Contributor
Du meinst einfach eine temporäre Tabelle?
Klar warum nicht? Du kannst alles machen, was du über Queries machen kannst. Ein Create TABLE geht natürlich...

Ich würds aber micht machen :) Wozu brauchst du die Tabelle? Schau dir mal VIEWS an
 

Fleur de Soleil

Aktives Mitglied
Die tempTables brauche ich weil ich einige Zwischenschritte habe. Ich erzeuge durch Joins von mehreren Tabellen mehrere temporäre Tabellen und joine die am Ende alle zusammen zu meinem Endergebnis. Das ganze in einem SQL Befehl zu machen ist denke ich viel zu kompliziert, die einzelnen sind jetzt schon ziemlich dicke ;)

Sind die Daten der Views auf der Datenbank oder auf dem lokalen Rechner? Im Prinzip ist ein View nur eine andere Sicht (mit Einschränkungen) auf eine Tabelle. Sind Views auch auf Joins möglich??

LG Fleur
 

tuttle64

Bekanntes Mitglied
Die tempTables brauche ich weil ich einige Zwischenschritte habe. Ich erzeuge durch Joins von mehreren Tabellen mehrere temporäre Tabellen und joine die am Ende alle zusammen zu meinem Endergebnis. Das ganze in einem SQL Befehl zu machen ist denke ich viel zu kompliziert, die einzelnen sind jetzt schon ziemlich dicke ;)


Guter Ansatz. Üblicherweise lässt man derartige SQLs als Batch ablaufen. Ist die Auswertung einmalig oder wiederholt?

Zu den Views: Es ist richtig, dass Views keine Daten enthalten. Sollte jedoch die Datenaufbereitung nicht performant sein, gibt es z.B. von Oracle das Konzept von materialized views. Mit welcher DB arbeitest Du?
 

Fleur de Soleil

Aktives Mitglied
Hallo zusammen,

also das ganze passiert auf einer Informix-Datenbank und das wiederholt (monatlich, quartal). Bis jetzt wird das ganze durch BATCH-Programme übernommen, die als Ergebnis csv-Dateien erstel-len. Diese werden dann anschließend durch VBA-Code innerhalb von Excel nach Excel importiert und formatiert. Diese Zwischenschritte würden wir uns gerne sparen und das ganze Zentral ablaufen lassen. Ist dies in einem Java-Programm möglich?

LG Fleur
 

turtle

Top Contributor
Ein gutes (ORM)-Framework solltest Du Dir ansehen: MyBatis Home.

Dieses erlaubt die Nutzung von "purem" SQL-Befehlen ohne "Hibernate-Schnickschnack" und wenn Du schon SQL hast kannst Du es einfach weiter verwenden!

Vorteil: Du musst SQL schreiben und weißt daher genau welcher Befehl gegen die DB läuft.
Nachteil: Du musst SQL schreiben und kein Framework erledigt dies für Dich.

Ich kann es nur empfehlen
 
Zuletzt bearbeitet:

Fleur de Soleil

Aktives Mitglied
Hallo,

ist dafür überhaupt ein Framework notwendig? Geht das ganze nicht auch mit plain jdbc?? Hab leider noch ein Problem, dass gelöst werden müsste. Ist es möglich in einem Statement auf mehrere Datenbanken zuzugreifen?? Der zentrale Datenpool besteht leider aus mehreren Datenbanken auf die bis jetzt gleichzeitig zugegriffen wird. Dafür bräuchte ich in Java aber zwei Connections....geht so etwas??

LG Fleur
 

turtle

Top Contributor
Geht das ganze nicht auch mit plain jdbc??
Ja, schon. Ich rate aber von der direkten Nutzung von JDBC ab. Die korrekte Freigabe von Resourcen/Statements/Connections ist nicht ohne und sollte meiner Meinung nach ein Framework machen.
Ist es möglich in einem Statement auf mehrere Datenbanken zuzugreifen??
Ja. Kommt meinem Verständnis auch ein bisschen darauf an, ob mit den Verbindungsdaten der ersten Datenbank (User, Passwort) auch auf das Schema (Tabellen) für die zweite Datenbank zugegriffen werden kann. Dann ist's doch "nur" ein Join, oder?
Dafür bräuchte ich in Java aber zwei Connections....geht so etwas??
Ja, ich sehe aber nicht warum da zwei Verbindungen aufgebaut werden müssen.
 

tuttle64

Bekanntes Mitglied
Hallo zusammen,

also das ganze passiert auf einer Informix-Datenbank und das wiederholt (monatlich, quartal). Bis jetzt wird das ganze durch BATCH-Programme übernommen, die als Ergebnis csv-Dateien erstel-len. Diese werden dann anschließend durch VBA-Code innerhalb von Excel nach Excel importiert und formatiert. Diese Zwischenschritte würden wir uns gerne sparen und das ganze Zentral ablaufen lassen. Ist dies in einem Java-Programm möglich?


Sofern Java auf dem Server verfügbar ist, kann man die Formatierungen auch von Java durchführen lassen. Wie komplex sind diese Formatierungen?
 

Fleur de Soleil

Aktives Mitglied
Guten Morgen,

also die Formatierung werde ich mit POI machen. Wird auch bereits in anderen Bereichen eingesetzt. Anscheinend erfüllt Java somit alles was ich benötige.

Danke euch

LG Fleur
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Daten auf mehrere Tabellen aufteilen oder Spalten nutzen Datenbankprogrammierung 2
Ataria SQLite Werte aus zwei Tabellen zusammenführen Datenbankprogrammierung 8
I H2 - GUI Tool.... sehe aber keine Tabellen Datenbankprogrammierung 2
Zrebna Tabellen-Erzeugung via Hibernate ignoriert 'CascadeType' settings Datenbankprogrammierung 1
H JDBC Tabellen ausgeben Datenbankprogrammierung 8
Kirby.exe Tabellen Zeilen combinen und splitten Datenbankprogrammierung 3
N Hibernate Entitäten bei Selects aus 2 Tabellen Datenbankprogrammierung 7
M Sql Tabellen erstellen Datenbankprogrammierung 3
F Tabellen automatisch erstellen wenn sie nicht existieren Datenbankprogrammierung 6
C Mapping mit Annotations von 2 Tabellen Datenbankprogrammierung 22
W Problem mit Insert in zwei Tabellen Datenbankprogrammierung 8
L Join zweier Tabellen in SQL Datenbankprogrammierung 2
P JSP - Daten aus 2 Tabellen in eine neue Tabelle einfügen Datenbankprogrammierung 1
I Oracle Wie ermitteln, welche Benutzer-(!)Tabellen in einer DB sind? Datenbankprogrammierung 1
H Brauche Hilfe beim Mappen von 3 Tabellen a 1:n mit hbm.xml. Datenbankprogrammierung 34
D JPQL- Query über mehrere Tabellen Datenbankprogrammierung 7
feinperligekohlensaeure MySQL Dynamische Tabellen. Wie kann man es besser machen? Datenbankprogrammierung 3
O HSQLDB Eine Entität, mehrere Tabellen Datenbankprogrammierung 8
O JDBC Daten in zwei Tabellen mit zwei foreach-Schleifen einfügen (insert into) Datenbankprogrammierung 1
D Count(*) auf 2 Tabellen anwenden Datenbankprogrammierung 7
D MySQL Many to Many Tabellen in Java abbilden? Datenbankprogrammierung 4
V SQLite 2 Tabellen vergleichen und nur Unterschiedliche Sätze rausgeben. Datenbankprogrammierung 31
F Tabellen verbinden Datenbankprogrammierung 13
L0MiN Wie kann ich eine bestimmte Seite aus verschiedenen Excel-Tabellen in eine neue Exceldatei kopieren? Datenbankprogrammierung 1
U Kann die Tabellen nicht finden Datenbankprogrammierung 0
D umschalten zwischen verschiedene Tabellen Datenbankprogrammierung 1
U SQLite Für mich etwa komplexe Abfrage via 2 Tabellen Datenbankprogrammierung 5
E Kann man, wenn man in DB2 Tabellen erstellt hat für dessen auch einen Command-File erstellen? Datenbankprogrammierung 1
M JDBC Tabellen mit Boolean Spalten können nicht erstellt werden. DB Updaten - wie? Datenbankprogrammierung 6
T Tabellen von nicht mehr vorhandenen Entities werden generiert Datenbankprogrammierung 0
J MySQL Workbench Tabellen werden verschoben Datenbankprogrammierung 1
M MySQL Tabellen dynamisch erstellen Datenbankprogrammierung 12
T Ähnliche Wrapperklassen + DB-Tabellen Datenbankprogrammierung 1
K HSQLDB Einzelne Tabellen abfragen? Datenbankprogrammierung 4
T Tabellen Alias Datenbankprogrammierung 7
M MySQL Insert über mehrere Tabellen Datenbankprogrammierung 7
J Tabellen in Tabellen finden Datenbankprogrammierung 4
S versionierte Tabellen Datenbankprogrammierung 2
K n:m Tabellen mit Hibernate erstellen Datenbankprogrammierung 1
I Was ist besser: Tabellen oder Spalten Datenbankprogrammierung 1
S MySQL Abfrage über mehrere Tabellen + Einträge werden überschrieben Datenbankprogrammierung 1
M Vergleich von Daten in verschiedenen Tabellen Datenbankprogrammierung 1
C SQL-Statement SELECT über 3 Tabellen Datenbankprogrammierung 5
G 2 Tabellen und ein spezieller Eintrag Datenbankprogrammierung 2
T Fehler beim ausgeben von Tabellen Inhalt Datenbankprogrammierung 9
T 2 Tabellen aus 2 Datenbanken miteinander vergleichen Datenbankprogrammierung 6
I MySQL Vergleich über mehrere Tabellen! Join? Datenbankprogrammierung 6
R PostgreSQL Tabellen hinzufügen, falls nicht vorhanden Datenbankprogrammierung 3
E Tabellen nacheinander auslesen Datenbankprogrammierung 10
D Übersichtliche Zuweisung von Daten in Tabellen Datenbankprogrammierung 17
S 2 Tabellen zu einer zusammenführen, INSERT INTO Fehler Datenbankprogrammierung 5
A Zugriff auf DB-Tabellen mit Objekten Datenbankprogrammierung 3
K SQL tabellen auswahl in jfreechart Datenbankprogrammierung 2
0 Alle Tabellen aus DB lesen Datenbankprogrammierung 2
I Master/Detail Tabellen mit JDBC und Swing Datenbankprogrammierung 10
H Fortlaufende Nummerierung innerhalb mehrerer Tabellen Datenbankprogrammierung 4
G JOIN Abfrage über mehrere Tabellen Datenbankprogrammierung 15
Consuelo Verbinden von zwei Tabellen, foreign key Datenbankprogrammierung 4
O MySQL sql Datei einzelner Tabellen erzeugen (über Java Programm) Datenbankprogrammierung 6
T Kleine Tabellen für schnellere abfragen? Datenbankprogrammierung 3
G SQL Abfrage über mehrere Tabellen Datenbankprogrammierung 28
H SQL Abfrage - zwei tabellen vergleichen. Datenbankprogrammierung 2
R MySQL Unbenutzte Tabellen/Spalten herausfinden Datenbankprogrammierung 7
I mit Java SQL Attribute / Tabellen erstellen Datenbankprogrammierung 17
C SQL String zwei Tabellen vergleichen und gleiche Zeile löschen Datenbankprogrammierung 25
R hibernate Frage zu configFile-Pfad und Groß/Kleinschreibung von Postgres-Tabellen Datenbankprogrammierung 8
J Mit einer Abfrage Worte suchen die in Zwei Tabellen enthalten sind Datenbankprogrammierung 5
F Einzelne Sql- Tabellen sichern (lokal) Datenbankprogrammierung 2
I MySQL - Anzahl Tabellen heraus finden Datenbankprogrammierung 6
B Es werden keine Tupel in Tabellen abgelegt Datenbankprogrammierung 2
S SQL inner join bei >10 Tabellen über 2 Variablen Datenbankprogrammierung 2
S HSQLDB Kopiere Tabellen Datenbankprogrammierung 2
Guybrush Threepwood Nachträgliches Ändern von Variableneigenschaften in (gefüllten) Tabellen Datenbankprogrammierung 3
J Tabellen auflisten, die in einer Datenbank enthalten sind Datenbankprogrammierung 16
T DB2 delete/update über 2 Tabellen Datenbankprogrammierung 2
T SQL Abfrage: Zeige alle Values von bestimmten Tabellen Datenbankprogrammierung 11
R Datenbanken, Tabellen normalisieren. Datenbankprogrammierung 1
A Datenbankzugriffe, mehr Tabellen Datenbankprogrammierung 12
oliver1974 JPA, JTable und 2 DB-Tabellen... Datenbankprogrammierung 2
J Starre Datenbankstruktur oder Tabellen bei Bedarf neu erzeugen? Datenbankprogrammierung 5
X Abfrage über 2 Tabellen mit Tücken Datenbankprogrammierung 3
G verbindung 2er Tabellen Datenbankprogrammierung 3
M Auswerten über drei Tabellen Datenbankprogrammierung 2
H Inserts in 2 Tabellen 1:n Datenbankprogrammierung 6
G Mehrere Tabellen abfragen Datenbankprogrammierung 7
M JavaDB/Derby: Tabellen erstellen Datenbankprogrammierung 8
G 2 Tabellen in einer 1:n Verbindung Datenbankprogrammierung 2
M insert in 2 tabellen Datenbankprogrammierung 7
MQue Metadaten für Tabellen in der Datenbank Datenbankprogrammierung 5
D aus mehreren sql tabellen matchen und sortieren Datenbankprogrammierung 6
G 2 Tabellen zusammenfügen wie? Datenbankprogrammierung 8
G Tabellen-Dokument als Datenbank Datenbankprogrammierung 2
S MySQL: Abfrage auf 2 Tabellen durch join Datenbankprogrammierung 5
Y Hibernate - Mapping der Beziehung zwischen 2 Tabellen Datenbankprogrammierung 2
ARadauer tabellen kommentar ausgeben Datenbankprogrammierung 2
S Mysql abfrage über 2 tabellen. Datenbankprogrammierung 10
Y Hibernate - Werte aus 2 Tabellen laden Datenbankprogrammierung 29
S Postgres und die Ursprungstabelle bei vererbten Tabellen Datenbankprogrammierung 4
M Mehrere Tabellen zusammenführen Datenbankprogrammierung 4
A Index bzw. Indizes von Tabellen herausfinden Datenbankprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben