Hallo alle zusammen und willkommen zu meinem ersten Post!
Ich arbeite gerade an der Integration von SQL-Datenbanken (mit JDBC) in ein größeres Projekt. Dabei sollen Daten ausgelesen und anschließend mit verschiedenen Algorithmen weiterverarbeitet werden. Die Datenmengen bewegen sich dabei schlimmstenfalls im Terrabyte-Bereich und deswegen ist das Vorgehen nicht so straight-forward, wie es vielleicht bei kleinerem Umfang der Fall wäre.
Konkret heißt das, dass ich das "Aussehen" eines ResultSets (also z.B. die Spaltennamen oder die Typen in den einzelnen Spalten) gerne vorhersagen würde, bevor die tatsächliche (eventuell sehr ressourcenintensive) Anfrage gestellt wird.
Die momentan von mir verfolgte Weg besteht darin nach der Verbindungsaufnahme den Produktnamen der Datenbank zu erfragen, um dann abhängig davon die Anfrage so zu verändern, dass das ResultSet nur eine Zeile enthält (z.B. per TOP bei SQL Server oder LIMIT bei MySQL).
Trotz längerer Suche ist es mir aber nicht gelungen herauszufinden, was genau die Anfrage in Zeile 7 für die verschiedenen Datenbanken zurück gibt. :bahnhof: Ich vermute aber schon, dass diese Information irgendwo vorhanden ist - kann mir jemand die Augen öffnen?
Ich nehme natürlich auch gerne alternative Vorschläge an, die mein Problem lösen könnten.
Ich arbeite gerade an der Integration von SQL-Datenbanken (mit JDBC) in ein größeres Projekt. Dabei sollen Daten ausgelesen und anschließend mit verschiedenen Algorithmen weiterverarbeitet werden. Die Datenmengen bewegen sich dabei schlimmstenfalls im Terrabyte-Bereich und deswegen ist das Vorgehen nicht so straight-forward, wie es vielleicht bei kleinerem Umfang der Fall wäre.
Konkret heißt das, dass ich das "Aussehen" eines ResultSets (also z.B. die Spaltennamen oder die Typen in den einzelnen Spalten) gerne vorhersagen würde, bevor die tatsächliche (eventuell sehr ressourcenintensive) Anfrage gestellt wird.
Die momentan von mir verfolgte Weg besteht darin nach der Verbindungsaufnahme den Produktnamen der Datenbank zu erfragen, um dann abhängig davon die Anfrage so zu verändern, dass das ResultSet nur eine Zeile enthält (z.B. per TOP bei SQL Server oder LIMIT bei MySQL).
Java:
/* Minimalbeispiel:
* Dabei sind 'URL', 'benutzer', 'passwort' und anfrage 'jeweils' Strings,
* die als Parameter übergeben wurden:
*/
Connection verbindung = DriverManager.getConnection(URL, benutzer, passwort);
String dbname = verbindung.getMetaData().getDatabaseProductName();
String neueAnfrage = transformiereAnfrage(anfrage, dbname);
ResultSet ergebnis = statement.executeQuery(neueAnfrage);
/* über die Metadaten von 'ergebnis' kann ich dann alle nötigen Informationen
* auslesen
*/
Trotz längerer Suche ist es mir aber nicht gelungen herauszufinden, was genau die Anfrage in Zeile 7 für die verschiedenen Datenbanken zurück gibt. :bahnhof: Ich vermute aber schon, dass diese Information irgendwo vorhanden ist - kann mir jemand die Augen öffnen?
Ich nehme natürlich auch gerne alternative Vorschläge an, die mein Problem lösen könnten.