Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
kann man ungefähr sagen, wie lange (Sekunden, Minuten,...) es dauern darf/muss bis man ca. 380 000 Werte aus 900 verschiendenen Files (die zuvor schon eingelesen wurden) in einer Access Datenbank abgespeichert hat.
Die Tabelle in die gespeichert werden muss, hat 3 Spalten.
Die speicherung erfolgt aus dem Code heraus über einen Button save.
gleichbleibend gut wäre jedenfalls, wenn es nicht länger als das 1000fache der Speicherung von 380 Werten dauert,
(wenn das lange dauert, ist das 1000fache davon auch nicht ideal)
also 3, 4 minuten kann das schon dauern oder?
kann man zumindest sagen, dass die speicherung einer solchen Datenmenge nicht in sekunden erfolgen kann oder?
Meine Vorgehensweise ist bis jetzt so: ich lese die Files ein und speichere die Werte die ich benötige in einem Array. Die arrays werden in einer Arraylist abgelegt und dann erstelle ich erst meine DB Verbindung. Ich durchlaufe meine Arraylist, bekomme als Rückgabe ein Array und die Werte des Arrays werden dann in der Tabelle gespeichert.
Ist dieser Ansatz von der Vorgehensweise her in ordnung oder könnte man das besser lösen?
Datenbanken (wahrscheinlich nicht access :lol haben meist noch spezielle Befehle um in Lichtgeschwndigkeit Backups zu importieren, File-Dumps in binären Formaten oder CSV, weil diese schneller als SQL sind
also 3, 4 minuten kann das schon dauern oder?
kann man zumindest sagen, dass die speicherung einer solchen Datenmenge nicht in sekunden erfolgen kann oder?
Meine Vorgehensweise ist bis jetzt so: ich lese die Files ein und speichere die Werte die ich benötige in einem Array. Die arrays werden in einer Arraylist abgelegt und dann erstelle ich erst meine DB Verbindung. Ich durchlaufe meine Arraylist, bekomme als Rückgabe ein Array und die Werte des Arrays werden dann in der Tabelle gespeichert.
Ist dieser Ansatz von der Vorgehensweise her in ordnung oder könnte man das besser lösen?
File einlesen dauert in der Regel Zeit.
Daten in einer ArrayList erstmal komplett im Speicher zu haben kostet Speicher und fals dieser nicht ausreicht und eine Auslagerungsdatei benutzt wird kostet das noch mehr Zeit.
Eine Möglichkeit wäre 1 File einlesen in eine ArrayList, neuen Thread erstellen der die ArrayList bekommt und in die Datenbank schreibt.
Wärend des Schreibens kann dann schon das nächste File eingelesen werden.
Dann spielt die "gute" Verwendung von jdbc eine Rolle. Sprich connection cachen und nicht für jeden Eintrag neu erstellen. PreparedStatements statt einfache Statements können einen weiteren Geschwindigkeitsvorteil bringen. Und guter letzt das Nutzen von executeBatch mit mehreren Statements als das von execute.
Weitere Unterschiede ergeben sich ob die DB lokal auf dem Rechner läuft oder Remote auf einem anderen liegt, da man Prinzipiell sagen kann das alles was übers Netzwerk läuft um einige Faktoren länger dauert.