CSV Datei in MSSQL DB oder doch SQL Script

HakBak

Aktives Mitglied
Hallo,
ich stehe vor einem Problem und zwar erstelle ich in meinem Javaprogramm im Augenblick eine txt.Datei mit Daten, die per ; voneinander getrennt sind.
Diese Datei wird direkt auf einem Rechner erstellt, auf dem ein MS-SQL Server läuft. Nun möchte ich diese Daten in die Datenbank bringen.
Meine erste Idee war, das ganze per bulk insert in eine temp-Tabelle zu schreiben und dann die eigentlich aktuelle Tabelle mit der temp-Tabelle zu updaten. Nun ist es aber so, dass die temp-Tabelle weniger Spalten haben wird, als die eigentlich Tabelle. Jetzt weiss ich nciht, ob das so einfach möglich ist.

Meine nächste Idee war es, keine Daten-datei zu erstellen, sondern ein sql-script, welches updates und inserts der daten beinhaltet. Jetzt weiss ich allerdings nicht, ob, und wenn ja, wie ich per Java eine sql-script ausführe. Und es soll nciht mit einem FileReader eingelesen werden und Zeile für Zeile durchgegangen werden, es soll direkt über einen Befehl oder sonst was vom SQL-Server ausgeführt werden, eben ähnlich einem Bulk-insert.

Meine dritte Idee war es, die Daten-datei (wieder mit dem ; als Seperator), in eine extra dafür angelegte Tabelle zu schreiben, wieder mittels bulk-insert und diese dann mit stored procedures in die eigentlich produktiv Tabell zu updaten. Ich habe bis jetzt leider keinerlei Ahnung von stored procedure. Vielleicht könnt ihr mir ein wenig dabei helfen.

So, das sind meine drei Vorschläge, könnt ihr mir da irgendwie bei meiner Wahl helfen?
Danke
 

HakBak

Aktives Mitglied
Weil das zu lange dauert, ich hab ca. 400.000 Datensätze und diese in die DB zu schreiben würde SEHR lange dauern - habs schon ausprobiert. Deswegen auch die Idee ein File direkt auf den Server zu schreiben und den Import von dort aus durchzuführen, da es übers Netz zu lange dauert.
 
M

maki

Gast
Weil das zu lange dauert, ich hab ca. 400.000 Datensätze und diese in die DB zu schreiben würde SEHR lange dauern - habs schon ausprobiert. Deswegen auch die Idee ein File direkt auf den Server zu schreiben und den Import von dort aus durchzuführen, da es übers Netz zu lange dauert.
Hast du mit batchUpdates & Transaktionen gearbeitet?
Die größe der beiden macht den Unterschied ;)

Wenn du weder das eine noch das andere eingesetzt hast, wirdf es Zeit, denn der Umweg über die Datei ist nicht wirklich der direkte Weg ;)
 

Firestorm87

Bekanntes Mitglied
Also eigentlich solltest du aus performance Gründen eher den Weg über die DB wählen, als über ein extra File...
Denn ob du das ganze in eine Datei schreibst, oder in die DB (so lange Sie das noch nicht direkt persistiert), spielt keine Rolle....
Und das ganze fix persistieren sollte dann schneller gehen, als ein weiterer Import aus dem File.
 

HakBak

Aktives Mitglied
Also direkt vom Programm aus, über eine Connection immer ein ein Updatestatement absetzen, dauert einfach zu lange.
Über eine Transaktion, die bei mir wie folgt aussehen würde:

Java:
Connection connMSSQLTest   = connectToMSSQLStamm();
            connMSSQLTest.setAutoCommit(false);
            Statement stmt;
            try
            {
                stmt = connMSSQLTest.createStatement();
                for(String elem : entityMap.keySet())
                {
                    count++;
                    KEntity entity = entityMap.get(elem); //die entityMap beinhaltet ca. 400000 Objekte, in denen die Daten, die in die Datenbank sollten, gespeichert sind
                    stmt.executeUpdate(entity.getUpdateStatement()); //gibt das Updatestatement mit den Daten zurück
                }
                connMSSQLTest.commit();
            }

Über Batch bekomm ich Probleme mit dem Speicher und es gibt nen heap space error. Vielleicht wenn, dich die Batch Updates aufsplitte ...?
 
M

maki

Gast
Wenn du 400000 Datensätze einfügen willst kommst du eigentlich nie mit der Standard Heapgröße aus, die JVM Paramter heissen Xms und Xmx.
 

Janus

Bekanntes Mitglied
Du solltest das Statement nur einmal kompilieren und für die jeweiligen Datensätze vor dem Update nur die Bindings entsprechend setzen. Bei zig tausend calls machen sich die paar Millisekunden schnell bemerkbar.
 

HakBak

Aktives Mitglied
Du solltest das Statement nur einmal kompilieren und für die jeweiligen Datensätze vor dem Update nur die Bindings entsprechend setzen. Bei zig tausend calls machen sich die paar Millisekunden schnell bemerkbar.

Sorry, wenn ich nochmal nachfragen, muss, wie meinst du das? Bezieht sich das jetzt auf die Transaktion, oder auf die Batch-Update? Ich dachte, ich erstelle in meinem Code zuerst das komplette Statement...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Datenbank Zugraff nach Umwandlung in .jar-Datei nicht mehr möglich Datenbankprogrammierung 4
D H2 schema-Datei ausführen Datenbankprogrammierung 22
L Oracle SQL Inserts via Client vs SQL Datei via ScriptRunner Datenbankprogrammierung 6
J JAR-Datei und Datenbank Datenbankprogrammierung 8
S Verbindung von einer Excel Datei zu Java Datenbankprogrammierung 2
J Jar-Datei stellt keine Datenbankverbindung her Datenbankprogrammierung 3
L CSV Datei mit DB Inhalt vergleichen Datenbankprogrammierung 20
F Auslesen einer .dbf-Datei, Zuordnung Index Datenbankprogrammierung 0
T Datei auf Desktop ausgeben Datenbankprogrammierung 22
W Daten aus einer Datei von einem VServer auslesen Datenbankprogrammierung 1
M HSQLDB .Script-Datei entfernen oder sperren Datenbankprogrammierung 18
M MySQL JSON-Datei auf Datenbank anwenden Datenbankprogrammierung 17
V SQLite Performance: 1 Datei mit einzelnen Einträgen gegenüber SQLite Datenbankprogrammierung 7
M Verbindung von Java Programm zur Acccess Datenbank (mdb-Datei) Datenbankprogrammierung 0
J SQL Datei einlesen/beschreiben Datenbankprogrammierung 0
F JPA persistence.xml mit EXTERNER Config Datei Datenbankprogrammierung 0
C VDF Datei als Datenbank genutzt!!! Datenbankprogrammierung 5
L SQL2SMO JAR-Datei zum Laufen bringen Datenbankprogrammierung 0
Androbin [Serializing] Mehrere Objekte in einer einzigen Datei speichern Datenbankprogrammierung 1
P Derby/JavaDB Csv Datei für dieses Musterprogramm Datenbankprogrammierung 12
D [xBaseJ] Datei kann nicht geöffnet werden Datenbankprogrammierung 2
L Werte in Datei speichern Datenbankprogrammierung 16
D Datenbank oder XML Datei Datenbankprogrammierung 3
M HSQLDB oder DERBY - warum SCRIPT Datei? Datenbankprogrammierung 0
S SQL-Abfrage, Filewriter .txt Datei Datenbankprogrammierung 2
T 3 GB Große CSV Datei einlesen und in SQL-DB schreiben Datenbankprogrammierung 12
T Datei import und Datumsformat Datenbankprogrammierung 4
D Derby Datenbank bei Export zu JAR-Datei nicht möglich Datenbankprogrammierung 8
K SQLite CSV-Datei einlesen in eine Datenbank Datenbankprogrammierung 7
E csv datei in JTable einlesen Datenbankprogrammierung 3
E Datei Zippen und an DB schicken Datenbankprogrammierung 7
N Oracle txt. Datei auslesen-> verändern-> einlesen Datenbankprogrammierung 7
I Zugriff auf Datenbank nach Erstellen einer Executable Jar Datei verweigert Datenbankprogrammierung 10
D MySQl Treiber in .jar Datei einbinden, Bukkit Datenbankprogrammierung 2
M Datenbank-Datei Datenbankprogrammierung 10
bluerob MimeMessage .getFrom()[0]; liest eml-Datei nicht Datenbankprogrammierung 7
achillesat ausgelesene Datei in Datenbank schreiben Datenbankprogrammierung 9
O MySQL sql Datei einzelner Tabellen erzeugen (über Java Programm) Datenbankprogrammierung 6
F Große Datei in MySQL importieren Datenbankprogrammierung 10
H Derby SQL-Abfragen in Datei abspeichern Datenbankprogrammierung 2
S passwortgeschützte Excel-Datei einlesen Datenbankprogrammierung 3
S Schnellste Methode Datei aus Datenbank herstellen Datenbankprogrammierung 7
C XLS Datei aus Datenbank erstellen Datenbankprogrammierung 14
H Datenbank in Datei speichern / laden Datenbankprogrammierung 8
M FindBugs und PreparedStatement aus einer Datei lesen Datenbankprogrammierung 11
N Problem mit dem Importieren der csv- u. txt-Datei Datenbankprogrammierung 3
Dragonfire Daten aus jsp Datei in datenbank speichern Datenbankprogrammierung 15
M Tabelle in Access Datei mit JDBC generieren Datenbankprogrammierung 3
N csv datei erstellen Datenbankprogrammierung 2
S BLOB in Datei speichern Datenbankprogrammierung 8
S projektplanung mit csv datei Datenbankprogrammierung 2
M Gelöst: JavaDB - Derby Inhalt in Jar Datei speichern Datenbankprogrammierung 5
K jar Datei startet nicht aufgrund Firebird(?) Datenbankprogrammierung 3
D Access Datenbank in .jar-Datei Datenbankprogrammierung 51
H Wie kann ich eine Datenbank Connection aus XML-Datei lesen! Datenbankprogrammierung 2
M H2 DAtenbank in .sql datei schreiben/abfragen ? Datenbankprogrammierung 3
A Auslesen von Werten aus der DB in eine csv-Datei Datenbankprogrammierung 4
T Wie kann ich Blobs (Bilder) in einer Datei speichern? Datenbankprogrammierung 2
A Auslesen aus einer csv-Datei Datenbankprogrammierung 2
A Einlesen einer csv-Datei in eine H2-Datenbank Datenbankprogrammierung 3
A Probleme beim Schreiben in eine CSV-Datei aus einer H2-DB Datenbankprogrammierung 2
G Import einer csv-Datei in eine H2-Database Datenbankprogrammierung 12
N csv datei in PostgreSQL datenbank einlesen Datenbankprogrammierung 1
M Mit Java .txt-Datei in eine Datenbank einlesen lassen Datenbankprogrammierung 33
ARadauer datenbank in datei sichern Datenbankprogrammierung 4
B HSQLDB und die log-Datei Datenbankprogrammierung 10
S [Hibernate] Map in Map - Wie sieht Mapping Datei aus? Datenbankprogrammierung 10
F Probleme mit Jar Datei Datenbankprogrammierung 3
T Datei (Blob) mit verknüpfter Software öffnen? Datenbankprogrammierung 4
M Problem: Große Datei in MySQL DB importieren. Datenbankprogrammierung 12
P ODBC verbindung Java soll auf access mdb datei zugreifen Datenbankprogrammierung 2
S SQLite oder RDBMS als Datei(nicht Client/Server) Datenbankprogrammierung 5
G .jar - Datei erzeugen (Was beachten?) Datenbankprogrammierung 2
R Mit JAR-Datei ist MySQL-Treiber nicht auffindbar Datenbankprogrammierung 10
Y Problem mit Ablage einer Datei in einer Datenbank als BLOB Datenbankprogrammierung 6
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
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

Ähnliche Java Themen

Neue Themen


Oben