Hallo,
bei einem Projekt ist eine Funktionalität notwendig, um grössere Datenmengen, die als csv-Datei (excel-Textexport) vorliegen, zu importieren. Diese Dateien können durchaus mal mehrere MB gross werden (es handelt sich teilweise um Tabellen mit zehntausenden von Zeilen). Die csv-Dateien sollen analysiert und ihre Inhalte in der Datenbank der Applikation gespeichert werden.
An sich kein Problem, die Frage ist nur, inwiefern eine Webapplikation auf eine Textdatei zugreifen kann. Mein erster Ansatz war: Die Applikation läuft im Tomcat, die Dateien liegen in einem dafür explizit definierten Verzeichnis auf dem Webserver (wo sie per ftp oder scp hinkopiert werden), und die Webanwendung importiert sie dann halt nach Klick auf einen Button.
Nun soll die Applikation jedoch nicht im Tomcat, sondern in einem richtigen JEE-Application Server (vermutlich JBoss) laufen, und soweit ich weiss, ist es dann keine gute Idee mehr, aufs Dateisystem zugreifen zu wollen (und sogar wenn es funktionieren sollte, is es nicht gemäß der JEE-Spezifikationen).
Was also tun?
Ein Ansatz wäre, die Dateien per webbasiertem Datei-Upload in die Datenbank schreiben zu lassen (als CLOB oder sowas), dann aus der Datenbank zu lesen und zu verarbeiten. Allerdings kommt mir ein Datei-Upload per HTTP bei 20 MB grossen Dateien eher unpraktikabel und sehr störanfällig vor (wegen Übertragungsraten, Session-Timeout usw.).
Eine andere Idee, die ich spontan favorisiere, ist, das ganze Lesen und Analysieren der CSV-Datei auf einem lokalen PC per java-Swing-Anwendung zu machen, welche die Daten dann per jdbc/JPA auf den entfernten Server schreibt. Ich vermute, es ist möglich, eine JDBC-Verbindung übers Internet zu einer Datenbank auf einem entfernten Server aufzubauen? Aber auch da stellt sich die Frage, was tun, wenn die Verbindung zwischendurch aufgrund von Internet-Störungen unterbrochen wird?
Bin für Ideen und Hinweise dankbar.
Gruß
Jan
bei einem Projekt ist eine Funktionalität notwendig, um grössere Datenmengen, die als csv-Datei (excel-Textexport) vorliegen, zu importieren. Diese Dateien können durchaus mal mehrere MB gross werden (es handelt sich teilweise um Tabellen mit zehntausenden von Zeilen). Die csv-Dateien sollen analysiert und ihre Inhalte in der Datenbank der Applikation gespeichert werden.
An sich kein Problem, die Frage ist nur, inwiefern eine Webapplikation auf eine Textdatei zugreifen kann. Mein erster Ansatz war: Die Applikation läuft im Tomcat, die Dateien liegen in einem dafür explizit definierten Verzeichnis auf dem Webserver (wo sie per ftp oder scp hinkopiert werden), und die Webanwendung importiert sie dann halt nach Klick auf einen Button.
Nun soll die Applikation jedoch nicht im Tomcat, sondern in einem richtigen JEE-Application Server (vermutlich JBoss) laufen, und soweit ich weiss, ist es dann keine gute Idee mehr, aufs Dateisystem zugreifen zu wollen (und sogar wenn es funktionieren sollte, is es nicht gemäß der JEE-Spezifikationen).
Was also tun?
Ein Ansatz wäre, die Dateien per webbasiertem Datei-Upload in die Datenbank schreiben zu lassen (als CLOB oder sowas), dann aus der Datenbank zu lesen und zu verarbeiten. Allerdings kommt mir ein Datei-Upload per HTTP bei 20 MB grossen Dateien eher unpraktikabel und sehr störanfällig vor (wegen Übertragungsraten, Session-Timeout usw.).
Eine andere Idee, die ich spontan favorisiere, ist, das ganze Lesen und Analysieren der CSV-Datei auf einem lokalen PC per java-Swing-Anwendung zu machen, welche die Daten dann per jdbc/JPA auf den entfernten Server schreibt. Ich vermute, es ist möglich, eine JDBC-Verbindung übers Internet zu einer Datenbank auf einem entfernten Server aufzubauen? Aber auch da stellt sich die Frage, was tun, wenn die Verbindung zwischendurch aufgrund von Internet-Störungen unterbrochen wird?
Bin für Ideen und Hinweise dankbar.
Gruß
Jan