Ankündigung

Einklappen
Keine Ankündigung bisher.

Nachträglich Daten in MySQL-Tabelle einfügen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Nachträglich Daten in MySQL-Tabelle einfügen

    Hallo zusammen,

    Im Rahmen meiner Arbeit muss ich Energiedatenmessungen für verschiedene Anlage aus einem csv-File in eine Datenbank importieren. Das funktioniert soweit auch ganz gut mit dem Befehl

    mysql_query("LOAD DATA LOCAL INFILE '".$_FILES['file']['name']."'
    INTO TABLE ".$tabellenname." FIELDS TERMINATED BY '\t'
    LINES TERMINATED BY '\n' (s1,s2,s3,s4,s5)")

    Nun kann es aber passieren, dass Daten nachträglich zu einer bereits existierende Tabelle hinzugefügt werden müssen, allerdings in einer neuen Spalte. Diese Daten sind ebenfalls in csv-Dateien gespeichert. Wenn ich nun dieses File in neu erstelle Spalten (mache ich mit ALTER table ADD column) der Tabelle importieren möchte (hier benutze ich auch den oben genannten Befehl), werden die Daten zwar in die neu generierten Spalten geschrieben, aber erst unterhalb der bestehenden Einträge.

    Die Tabelle sieht also so aus:

    Alte Spalte Neue Spalte

    123 NULL
    345 NULL
    678 NULL
    NULL 901
    NULL 234
    NULL 567

    Ich möchte aber, dass sie so aussieht:

    Alte Spalte Neue Spalte

    123 901
    345 234
    678 567

    Ich habe auch schon versucht, die neuen Daten in eine andere Tabelle zu laden und von dort aus die Daten zu kopieren, kam aber zum gleichen Ergebnis.

    Ich weiß, dass meine Anwendung den Sinn einer relationalen Datenbank etwas verfehlt, trotzdem:

    Kann mir jemand weiterhelfen?
    Würde es evtl helfen, einen Primärschlüssel einzufügen?
    Wenn ja, gibt es einen Befehl, mit dem ich mehrere Daten gesammelt in eine Spalte übertragen kann, also ugf. so:
    INSERT INTO tabelle (neue spalte) ab Primärschlüssel = 1
    SELECT * from anderertabelle

    Vielen Dank schonmal!


  • #2
    Zitat von strandgammler Beitrag anzeigen
    Kann mir jemand weiterhelfen?
    Vielleicht.

    Würde es evtl helfen, einen Primärschlüssel einzufügen?
    Einen PK sollte jede Tabelle haben und wird auch für die Problemlösung hier nützlich sein, ist aber nur Teil der Lösung.

    Wenn ja, gibt es einen Befehl, mit dem ich mehrere Daten gesammelt in eine Spalte übertragen kann, also ugf. so:
    INSERT INTO tabelle (neue spalte) ab Primärschlüssel = 1
    SELECT * from anderertabelle
    Ja. Nennt sich UPDATE. Das Handbuch kennt sogar die Syntax.
    Vielen Dank schonmal!
    Aber gerne doch.
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Weiters:

      - Code wie queries hier bitte in die CODE Tags geben

      - die mysql_ Erweiterung ist veraltet - wird es bald nicht mehr geben - http://php.net/manual/en/migration55.deprecated.php

      - SELECT * macht man nicht http://php-de.github.io/jumpto/code-smells/#select-
      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar

      Lädt...
      X