1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

String und Zahl in Datenbank schreiben

Dieses Thema im Forum "SQLite" wurde erstellt von HasDu, 25 August 2017.

  1. HasDu

    HasDu Neuer Benutzer

    Guten Tag allerseits,

    vorweg: ich habe keinerlei Vorwissen bzgl. Datenbanken und arbeite mich gerade ein. Ich hoffe, ihr könnt mich etwas unterstützen.

    Ich habe gerade eine SQLite Datenbank in Matlab eingelesen, diese um weitere Spalten ergänzt, mit Daten aus einer Excel-Tabelle beschrieben und möchte die zusätzlichen Spalten zurück in die Datenbank schreiben. Der Grund, wieso ich die komplette Datenbank zuerst einlesen musste, ist weil ich die neuen Daten chronologisch in die Datenbank sortieren musste (falls es jemanden wundert).
    Was ich bisher getan habe:

    for k = 1:size(Spaltennamen,1)
    momSpaltenname = cell2mat(Spaltennamen(k));
    try
    query = sprintf('ALTER TABLE Kennzahlen ADD %s varchar ', momSpaltenname);
    exec(conn, query);
    catch
    end
    end

    Spaltennamen sind, wie der Name schon sagt, die Namen der jeweiligen Spalten. Hiermit habe ich meine Datanbank um die notwendigen Spalten erweitert. Das funktioniert auch soweit sehr gut.

    Nach meinem Sortiervorgang möchte ich nun die Zelleninhalte einfügen.

    for k=rowstart+1:size(GivenDB,2) %Spalten durchgehen; rowstart ist die letzte Spalte der ursprünglichen Datenbank
    for L=2:size(GivenDB,1) %Zeilen durchgehen
    momSpaltenname=GivenDB{1,k}; %GivenDB ist die ergänzte Datenbank
    momZelleninhalt=GivenDB{L,k};
    momZeile=GivenDB{L,1};
    try
    query= sprintf('UPDATE Kennzahlen SET %s = %f WHERE %s = %f',momSpaltenname,momZelleninhalt,Par_DBLaufindex,momZeile);
    exec(conn, query);
    catch
    end
    end
    end

    Hier gehe ich in 2 Schleifen zuerst die Zeilen, dann die Spalten des neu hinzugefügten Abschnittes durch. Durch das try / catch fange ich die Fehlermeldung ab, die kommen würde, wenn ich leere Zelleninhalte schreiben möchte (nicht jede Zeile der neuen Spalten wird beschrieben).
    An sich funktioniert das auch sehr gut... bis der Zelleninhalt ein string wird. Die neuen Daten sind Spaltenweise Zahlen oder Wörter. Ich weiß, dass man Sonderzeichen oder Ähnliches nicht in SQLite schreiben kann, daher habe ich die Inhalte angepasst.
    Wenn ich test-weise den Inhalt einer Zelle 'a' nenne, wird mir ohne Fehlermeldung eine '97' in die Datenbank geschrieben. Bei dem Wort 'test' kommt die Fehlermeldung:

    "Error using sqlite/exec
    Received exception (SQL error or missing database VERZEICHNIS\DATENBANK.db. (unrecognized token:
    "67.000000UPDATE")) upon attempting an operation; details: UPDATE Kennzahlen SET Werkzeug_Bezeichnung3 = 116.000000 WHERE est =
    67.000000UPDATE Kennzahlen SET ycID = 280570.000000 WHERE ."

    Wenn ich die Datenbank öffne, wird mir bei "Schema" angezeigt, dass alle meine neu erstellten Spalten 'real' sind, was vermutlich auf Zahlen beschränkt ist. Das 'a' schreibt der mir wohl in eine Zahl, daher keine Fehlermeldung. Aber ich benötige manche der Spalten als String in der Datenbank. Kann mir hier jemand helfen?
    Bin hier etwas am verzweifeln, weil ich nicht weiß, wo ich ansetzen muss. Würde mich über jede Hilfe freuen.


    Gruß
    Hasan
     
  2. Dukel

    Dukel Datenbank-Guru

    Wozu? Wenn du die Daten später Chronologisch brauchst kannst du diese beim Select entsprechend ausgeben. Da brauchst du die Daten nicht (!) Chronologisch speichern.
     
Die Seite wird geladen...

Diese Seite empfehlen