Datentypen CSV to DB Leere Zellen in CSV mit Inhalt?

JAMarlonVA

Mitglied
Hallo zusammen,

mein Problem ist folgendes:

Ich speichere eine Excel Tabelle als CSV (UTF - 8 Trennzeichen).

Soll eine Sprachdatenbank werden. Also mit Kanji-Zeichen etc..

Beim Anlegen meiner DB habe ich mit der Matrix-Formel "{=MAX(LÄNGE(Spalte:Spalte))}" zunächst einmal die größten Einträge der jeweiligen Spalten ermittelt.

Ich lege beim Import eine Spalte mit Guids an und "update" diese Einträge dann Spalte für Spalte. Nun habe ich das Problem, dass eine Spalte (größter Eintrag acht Zeichen lang, laut Formel) mir diesen Fehler zurück gibt "com.microsoft.sqlserver.jdbc.SQLServerException: Zeichenfolgen- oder Binärdaten würden abgeschnitten".

Ich Trage die Werte, der Spalte, in ein "nvarchar(20)" DB Feld ein. Das sollte theoretisch passen.

Wenn ich die DB in dieser Spalte nach NULL - Einträgen filtere und die IDs der Einträge dann in meiner CSV suche, finde ich jedes mal eine Leere Zelle vor (von der Spalte an der scheitere).

Hat jemand eine Idee wie das zu Stande kommen kann?

PS: Die Tabelle ist ziemlich groß und ich bekomme manchmal einen Arbeitsspeicher-Fehler wenn ich die Matrixformel auf zu große Spalten anwende.
 

JAMarlonVA

Mitglied
Gott war ich verzweifelt.

Der Fehler lag an einem Invaliden CSV (Zeilenumbrüche in Zellen).

Lösung für mich war:

Makro in Excel schreiben was mir Semikolons und Zeilenumbrüche in "#ZU#", "#SM#" umwandelt und diese dannbeim Import wieder in Umbrüche umwandelt.

Man hätte auch ein Marko schreiben können, welches Zeichen wie diese Escapet aber für mich war diese Lösung komfortabler.
 

mrBrown

Super-Moderator
Mitarbeiter
Nur wenn man dieses nicht als Trennzeichen verwendet oder eben Escaped mit Anführungszeichen.
Und letzteres macht jedes übliche Programm (zumindest hab ich bisher noch nichts gegenteiliges gesehen) ;)
War das bei deiner Ursprungs-CSV nicht der Fall? Dann würde ich das mal als Bug melden. Excel zB macht das automatisch beim Speichern, eine invalide CSV-Datei hab ich da bisher noch nicht rausbekommen.

Ich habe den Rekorder benutzt und den daraus entstandenen Code angepasst
Was ist der "Rekorder"?
 

JAMarlonVA

Mitglied
Und letzteres macht jedes übliche Programm (zumindest hab ich bisher noch nichts gegenteiliges gesehen) ;)
War das bei deiner Ursprungs-CSV nicht der Fall? Dann würde ich das mal als Bug melden. Excel zB macht das automatisch beim Speichern, eine invalide CSV-Datei hab ich da bisher noch nicht rausbekommen.

So sah das vorher aus (Sieht mir falsch aus für eine 216 Spaltigen Tabelle):12170

Nachdem ich das Alles umgewandelt habe, wurde sie richtig abgebildet.

Was ist der "Rekorder"?

Man hat die Möglichkeit in Excel ein Makro aufzunehmen. Sprich man startet den Rekorder und Excel erstellt ein Makro aus den Funktionen, die man ausführt.

Dieses Makro habe ich dann nur noch anpassen müssen.
 

mrBrown

Super-Moderator
Mitarbeiter
So sah das vorher aus (Sieht mir falsch aus für eine 216 Spaltigen Tabelle):
Ne, für eine wirklich 216 spaltigen Tabelle (WTF?) sieht das vollkommen richtig aus :)

Man hat die Möglichkeit in Excel ein Makro aufzunehmen. Sprich man startet den Rekorder und Excel erstellt ein Makro aus den Funktionen, die man ausführt.

Dieses Makro habe ich dann nur noch anpassen müssen.
Aber aus dem Excel-Makro erstellst du doch nicht den Java-Code zum Einlesen der CSV-Datei? o_O
 

JAMarlonVA

Mitglied
Ne, für eine wirklich 216 spaltigen Tabelle (WTF?) sieht das vollkommen richtig aus :)

Spaltige mein ich natürlich.
in wie fern soll das richtig sein?:D

Aber aus dem Excel-Makro erstellst du doch nicht den Java-Code zum Einlesen der CSV-Datei? o_O

Achso.. Das ist jetzt auch schon etwas her. Bin auf den Beitrag nur nochmal eingegangen, um meine Lösung nochmal mit zu teilen.
Nun ja.. :D ich hab mir was eigenes gebastelt.
Aber das wurde nie angepasst.. Ich habe das mittlerweile als WebApp umgesetzt.

Php hat aber die gleichen Fehler gebracht, wenn ich die Zeichen nicht ersetzt habe.

Java:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class cCSV {
   
    String data[][];
   
    String csvFile = null;
    BufferedReader br = null;
    String csvSplitBy = null;
   
    int dimensionR = 0;
    int dimensionC = 0;
   
    public void open(String csv, String trennzeichen)   
    {
        csvFile = csv;
        csvSplitBy = trennzeichen;
       
        dimensionR = 0;
        dimensionC = 0;
        try
        {
           br = new BufferedReader(new FileReader(csvFile)); 
           br.mark(100000000);
        }
        catch (FileNotFoundException e)
        {
            e.printStackTrace();
            System.out.println("CSV zu groß");
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }

    }
   
    public void getData()
    {  
        try
        {
            data = new String[dimensionR][dimensionC];         
            br.reset();
            for(int i = 0; i < dimensionR; i++)
            {
                data[i] = br.readLine().split(csvSplitBy, -1);
            } 
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }    
    }
    public void getDimensions()
    {
        try {
            dimensionC = br.readLine().split(csvSplitBy).length;
            br.reset();
            while (br.readLine() != null)
            {
                dimensionR++;               
            }
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
    public void close()
    {
        data = null;

        csvFile = null;
        br = null;
        csvSplitBy = null;
    }
}

PS: Ich weiß, dass man da einige Sachen besser machen könnte :D
 
Zuletzt bearbeitet:

mrBrown

Super-Moderator
Mitarbeiter
Spaltige mein ich natürlich.
in wie fern soll das richtig sein?:D
Na in dem Bild sieht man nur eine sehr lange logische CSV-Zeile, obs wirklich 216 sind hab ich natürlich nicht nachgezählt, den Beginn sieht man ja auch nicht.
Aber alle Zeilenumbrüche darin sind passend mit Anführungszeichen umgeben, jeder CSV-Parser sollte das passend einlesen können - Excel zB konnten das ja bei dir auch.


Dein eigener Parser ist halt nicht CSV-konform, zB ignoriert er ja generell als Anführungszeichen. Falls du in PHP genauso parst, ist klar, woher der Fehler kommt - aber auch in PHP sollte man vernünftige Parser finden können.
 

JAMarlonVA

Mitglied
Dein eigener Parser ist halt nicht CSV-konform, zB ignoriert er ja generell als Anführungszeichen. Falls du in PHP genauso parst, ist klar, woher der Fehler kommt - aber auch in PHP sollte man vernünftige Parser finden können.

Dass mein eigener Parser das nicht kann, ist mir klar. Als ich das damals geschrieben habe, waren mir CSVs auch komplett neu.
Allerdings wundert es mich, dass die CSV Korrekt ist.. Eigentlich benutze ich von Php eine Funktion die das Parsen übernimmt .
Ich habe nahezu die gleichen Fehler gehabt, als ich die unveränderte CSV importiert hatte. Es hat zwar keinen Fehler aufgrund der Maximierung der DB Felder gegeben, allerdings sind viele Zellen leer gewesen, in denen eigentlich Inhalt sein sollte.
PHP:
 while (($data = fgetcsv($handle,100000, ";")) !== FALSE)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J POI: Leere Excel Zellen Java Basics - Anfänger-Themen 3
H Leere Zeilen in Textdatei löschen lassen Java Basics - Anfänger-Themen 5
berserkerdq2 Sende eine Nachricht an den Client und leere den Ausgabestorm, was ist damit genau gemeint? Java Basics - Anfänger-Themen 3
L Java erstellt leere Datei Java Basics - Anfänger-Themen 8
R Zu viele leere Parameter Java Basics - Anfänger-Themen 8
H Leere Eingabe in einem array Java Basics - Anfänger-Themen 11
MiMa Leere Datei ist nicht Leer ?? Java Basics - Anfänger-Themen 6
D Datenbankzugriff - Leere Zeile einfügen Java Basics - Anfänger-Themen 2
G Leere Zeile lesen Java Basics - Anfänger-Themen 12
A Leere Datei wird ohne Inhalt geschrieben, obwohl Inhalt geschrieben wurde. Java Basics - Anfänger-Themen 4
H Leere Anweisung Java Basics - Anfänger-Themen 24
N CaretListener: leere Textfelder = Button sperren Java Basics - Anfänger-Themen 11
T Sting -> Array, leere Stellen löschen Java Basics - Anfänger-Themen 6
K HashMap auf leere Key-Value-Paare prüfen Java Basics - Anfänger-Themen 14
X Erste Schritte Java JTable leere Reihen löschen Java Basics - Anfänger-Themen 2
E leere Ausgabe Java Basics - Anfänger-Themen 5
N leere JTextArea wird nicht angezeigt - TextArea aber schon? Java Basics - Anfänger-Themen 5
M File.ser auf leere checken Java Basics - Anfänger-Themen 17
N Fehlerquelle leere ArrayList elegant abfangen Java Basics - Anfänger-Themen 3
S Leere Datei erkennen Java Basics - Anfänger-Themen 5
P Leere Arraylist hat size von 1? Java Basics - Anfänger-Themen 3
B JList und JTable: leere Zeilen bei listfiles(); Java Basics - Anfänger-Themen 5
D Wie auf leere Benutzereingabe (int) prüfen? Java Basics - Anfänger-Themen 16
A Leere Fläche einer Tabelle umfärben Java Basics - Anfänger-Themen 3
N Scanner next() oder nextLine() zur prüfung auf leere Eingabe... Java Basics - Anfänger-Themen 6
B BufferedWriter - nur leere Datei erstellt Java Basics - Anfänger-Themen 4
G Leere Datei löschen? Java Basics - Anfänger-Themen 3
G leere columns "verstecken" Java Basics - Anfänger-Themen 5
G leere Ordner befinden sich nicht im Zip-Archiv Java Basics - Anfänger-Themen 8
K Leere Stelle im Array finden und ersetzen Java Basics - Anfänger-Themen 10
D String mit split teilen und leere Felder behalten Java Basics - Anfänger-Themen 4
G RegEx für leere IP Adresse? Java Basics - Anfänger-Themen 13
S In einer CSV Datei leere Zeilen ignorieren Java Basics - Anfänger-Themen 6
J Leere Textfields automatisch mit einem Wert ausfüllen Java Basics - Anfänger-Themen 3
S Leere Menge von integer Java Basics - Anfänger-Themen 3
R leere Zeichenkonstante? Java Basics - Anfänger-Themen 12
G Leere java.util.List erzeugen Java Basics - Anfänger-Themen 2
G JTable: mehrzeilige Zellen erstellen Java Basics - Anfänger-Themen 2
N JTable - Zellfarben ändern, GUI-Komponenten in Zellen einfügen Java Basics - Anfänger-Themen 5
J Zellen verbinden in JTable Ueberschrift Java Basics - Anfänger-Themen 3
C Zellen in einer JTable nicht anzeigen lassen Java Basics - Anfänger-Themen 3
V Accessible Zellen in JTables Java Basics - Anfänger-Themen 9
T Formatieren von Zellen einer PdfPTable mit IText Java Basics - Anfänger-Themen 3
J Winzige Frage bezüglich leeren Zellen (HSSF) Java Basics - Anfänger-Themen 14
G POI: Anzahl der Zellen einer Zeile holen Java Basics - Anfänger-Themen 2
S JTable--Beschreiben der Zellen durch Doppelklick verhindern Java Basics - Anfänger-Themen 4
M JTable sortieren ohne Berücksichtigung der leeren Zellen Java Basics - Anfänger-Themen 3
P Prüfen ob alle zellen der tabelle leer sind Java Basics - Anfänger-Themen 9
O JTable Zellen editieren abschalten Java Basics - Anfänger-Themen 2
B Einzelne Zellen in JTable markieren Java Basics - Anfänger-Themen 2
G Jtable mit bombobox in zellen Java Basics - Anfänger-Themen 7
E Schreiben in Excel -Zellen farbig darstellen Java Basics - Anfänger-Themen 4
G Zellen wie bei Excel? Java Basics - Anfänger-Themen 2
C JTable Zellen Ränder entfernen Java Basics - Anfänger-Themen 2
M JTable Zellen für User sperren Java Basics - Anfänger-Themen 4
M JTable Zellen in AWT Text Java Basics - Anfänger-Themen 11
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
javapingu Jeglichen Inhalt einer Textdatei nach Zeile n löschen Java Basics - Anfänger-Themen 8
K Ein Objekt Auto kennt den Inhalt seines links und rechtsstehenden Autos, wie soll man das ermöglichen Java Basics - Anfänger-Themen 2
Ameise04 Variablen Inhalt einer Variable im Code verwenden? Java Basics - Anfänger-Themen 9
I String ersetzen, der Inhalt enthält Java Basics - Anfänger-Themen 4
T Inhalt aus TextField in Attribut einer Instanz schreiben Java Basics - Anfänger-Themen 5
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
F Erstellen zweier Objekte mit dem selben Inhalt Java Basics - Anfänger-Themen 1
N den inhalt eines array per funktion ausgeben Java Basics - Anfänger-Themen 8
X TextField-Inhalt mit Button in .txt-Datei speichern Java Basics - Anfänger-Themen 16
H Universitätsaufgabe String inhalt Kontrollieren Java Basics - Anfänger-Themen 9
karlmasutra OOP Inhalt eines Array ausgeben lassen Java Basics - Anfänger-Themen 8
C Vector-Inhalt in zufällige Reihenfolge bringen Java Basics - Anfänger-Themen 6
D Ich suche nach einer Möglickeit den Webseiten Inhalt per Java zu analysieren Automatisch Java Basics - Anfänger-Themen 3
L Namensliste mit Array zeigt nicht den gewünschten Inhalt Java Basics - Anfänger-Themen 12
F Variablen JTextField-Inhalt kann nicht mit String abgeglichen werden Java Basics - Anfänger-Themen 2
Zeekay Development Methoden Methoden Inhalt Abhängig vom Objekt? Java Basics - Anfänger-Themen 9
B BufferedReader gibt Datei-Inhalt doppelt aus Java Basics - Anfänger-Themen 3
M Ordner mit Inhalt löschen Java Basics - Anfänger-Themen 7
R getrennte Objekte aus Klasse erstellen : warum Inhalt dann gleich ? Java Basics - Anfänger-Themen 2
Silvascus Inhalt eines externen Textdokuments an einen String übergeben Java Basics - Anfänger-Themen 2
F Inhalt einer Variable auswerten, die sich immer wieder ändert Java Basics - Anfänger-Themen 1
K Variablenname soll der Inhalt vom String sein Java Basics - Anfänger-Themen 2
O Zip-File Inhalt einlesen Java Basics - Anfänger-Themen 3
S Inhalt aus anderen Klassen verwenden Java Basics - Anfänger-Themen 1
H Input/Output Inhalt einer GUI in Textdatei speichern Java Basics - Anfänger-Themen 1
M Wie gebe ich den Inhalt aus? Java Basics - Anfänger-Themen 17
K Inhalt von einer csv-Datei abspeichern Java Basics - Anfänger-Themen 3
P Seite auf Inhalt prüfen Java Basics - Anfänger-Themen 2
U Inhalt von JTextfield an andere Klasse weitergeben Java Basics - Anfänger-Themen 13
Uzi21 jTable / Inhalt speichern Java Basics - Anfänger-Themen 2
T CSV auf Inhalt und Zeilen überprüfen Java Basics - Anfänger-Themen 2
S Inhalt von JPanel erst nach Resize sichtbar Java Basics - Anfänger-Themen 2
T Aufgerufene Methode Inhalt der übergebenen Referenz Java Basics - Anfänger-Themen 5
1 den Inhalt eines Arrays umdrehen Java Basics - Anfänger-Themen 11
K Inhalt in den Zwischenspeicher legen Java Basics - Anfänger-Themen 2
kaoZ Input/Output Verzeichnis Inhalt in combobox ausgeben Java Basics - Anfänger-Themen 8
G JTable: Inhalt einer selektierten Zeile speichern Java Basics - Anfänger-Themen 2
G Inhalt einer JTextArea wird nicht dargestellt Java Basics - Anfänger-Themen 8
J Inhalt in einem Text-File finden und in ein Array schreiben Java Basics - Anfänger-Themen 5
R Inhalt vom String größer oder kleiner als Java Basics - Anfänger-Themen 16

Ähnliche Java Themen

Neue Themen


Oben