SQL Tabellen updaten

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

  • SQL Tabellen updaten

    Hallo liebe Community,
    es wird wieder Zeit bei euch um Rat zu fragen.

    Ich hab folgendes Script:

    PHP-Code:
    for ($i 0$i sizeof($fcontents); $i++)
    {
        
    $line trim($fcontents[$i]);
        echo 
    "<tr bgcolor=\"#D3D3D3\"><td colspan=\"3\">$line <br></td></tr>";
        
    $arr explode(";" $line);
        
    #Wenn die CSV Datei TAB separiert ist, muss "," durch "/t" ersetzt werden
        
    $sql "insert into printer values ('"implode("','",$arr) ."')";
        
    #TABELLENNAME durch den Namen der Tabelle in der Datenbank ersetzen
        
        
    mysql_query($sql);
        echo 
    "<tr bgcolor=\"#32CD32\"><td colspan=\"3\">" $sql "<br>\n</td></tr>";
        
        if(
    mysql_error())
        {
            echo 
    "<tr bgcolor=\"red\"><td colspan=\"3\">" mysql_error() . "<br>\n</td></tr>";
        }

    Die für meine Frage relevante Zeile ist die hier:

    PHP-Code:
    $sql "insert into printer values ('"implode("','",$arr) ."')"
    Mein Problem ist folgendes.
    Ich möchte eine CSV-Datei uploaden und diese durch dieses Script in die Datenbank einschleusen. Das geht ja nur, wenn die Datenbank vorher keine gleichen Einträge enthält. Wenn die Datenbank diese Einträge schon enthält, dann wird das wohl schlecht gehen, dass ich versuche die Datenbank mit dem geupdatetem Inhalt fülle.

    Gibt es da ne möglichkeit diese Tabellen upzudaten, ohne, dass ich diese vorher löschen muss?

    edit: Eins hab ich noch vergessen. Sollten diese Inhalte nicht vorhanden sein, so soll er einen neuen Datensatz anlegen (Zeile).
    So das wars glaub ich. Ich hab so ziemlich alles probiert, was ich in der Dokumentation gefunden habe. Aber irgendwie will es nicht klappen. Scheinbar bin ich noch nicht so fit in solchen Sachen. Ich hoffe aber, dass ihr mir helfen könnt.

    MfG
    Sk4r
    Zuletzt geändert von sk4r; 27.09.2006, 12:08.
    Höre nie auf zu versuchen. Versuche nicht aufzuhören.

  • #2
    gibt es nicht INSERT... ON DUPLICATE KEY UPDATE... ?

    eine traditionellere Variante ist, zuerst ein SELECT zu machen, und dann jennach Zweck und Aufgabenstellung ein INSERT, ein UPDATE oder nichts.

    Kommentar


    • #3
      Re: SQL Tabellen updaten

      REPLACE
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Re: Re: SQL Tabellen updaten

        Original geschrieben von wahsaga
        REPLACE
        Sehr gute Antwort. Eigentlich das wonach ich gesucht habe. Jetzt hab ich aber ein anderes Problem. Wie binde ich das ein?


        EDIT: Ah habs gefunden. Vielen Dank. Funktioniert perfekt. Sag ich doch. Genau das, was ich gesucht habe.

        EDIT2: Thread kann geschlossen werden. Vielen Dank

        MfG
        sk4r
        Zuletzt geändert von sk4r; 27.09.2006, 12:36.
        Höre nie auf zu versuchen. Versuche nicht aufzuhören.

        Kommentar


        • #5
          Original geschrieben von sternm
          gibt es nicht INSERT... ON DUPLICATE KEY UPDATE... ?

          eine traditionellere Variante ist, zuerst ein SELECT zu machen, und dann jennach Zweck und Aufgabenstellung ein INSERT, ein UPDATE oder nichts.
          Wie stellt man das bei 1,4 Millionen Einträgen an?
          Höre nie auf zu versuchen. Versuche nicht aufzuhören.

          Kommentar


          • #6
            Verdammt. Ich hab ein neues Problem. Stellt euch vor ich hab gestern 151 Einträge gehabt und heute ist einer dieser Einträge weggefallen. D.h. ich hab nur noch 150. Jedoch bleibt der 151. noch in der Datenbank. Gibt es da auch ein Möglichkeit, dies zu lösen?
            Höre nie auf zu versuchen. Versuche nicht aufzuhören.

            Kommentar


            • #7
              Original geschrieben von sk4r
              Wie stellt man das bei 1,4 Millionen Einträgen an?
              kommt ja nicht darauf an wieviele in der Datenbank sind, sondern wieviele zu updaten sind. Wenn es 1,4 Millionen updates sind, ist das egal ob replace oder sonstwie vielleicht eine zeitaufwändige Sache. wenn es nur 150 sind auf 1,4 Millionen ist es auch egal mit welcher Methode.


              Falls Du mit deinem Einwand gemeint hast ,es brauche eine 'SELECT * from table' ohne WHERE liegst du falsch.

              Kommentar


              • #8
                Original geschrieben von sternm
                Falls Du mit deinem Einwand gemeint hast ,es brauche eine 'SELECT * from table' ohne WHERE liegst du falsch. [/B]
                Nene, damit hatte das nichts zutun. Vielen Dank für die Erklärung.
                Höre nie auf zu versuchen. Versuche nicht aufzuhören.

                Kommentar


                • #9
                  Verdammt. Ich hab ein neues Problem. Stellt euch vor ich hab gestern 151 Einträge gehabt und heute ist einer dieser Einträge weggefallen. D.h. ich hab nur noch 150. Jedoch bleibt der 151. noch in der Datenbank. Gibt es da auch ein Möglichkeit, dies zu lösen?
                  Äh, wie meinen?
                  <BeimQuizmitmach>
                  Du hast einen Eintrag unter den Tisch fallen lassen und suchst jetzt nach der Kehrschaufel?
                  </beimQuizmitmach>

                  Kommentar


                  • #10
                    Original geschrieben von kuddeldaddeldu
                    Äh, wie meinen?
                    <BeimQuizmitmach>
                    Du hast einen Eintrag unter den Tisch fallen lassen und suchst jetzt nach der Kehrschaufel?
                    </beimQuizmitmach>
                    <BeimQuizmitmachVerloren>
                    NEIN
                    </BeimQuizmitmachVerloren>

                    Also nochmal. Meine CSV Datei enthielt gestern 151 Einträge. Heute musste ich einen dieser Einträge entfernen, da dieser Artikel nicht mehr aufgelistet werden soll. So nun hab ich den Salat. Dieser Artikel wird immer noch angezeigt.

                    D.h. dieser 151. Artikel muss entfernt werden.
                    Höre nie auf zu versuchen. Versuche nicht aufzuhören.

                    Kommentar


                    • #11
                      Die Frage ist: Enthält Deine CSV-Datei die komplette Datenbank? Wenn ja, speichere in Deiner Schleife
                      eine Liste mit den IDs in einem Array und mach danach ein DELETE FROM tabelle WHERE <id nicht in Positivliste>
                      Syntax musst Du mal nachschlagen ("NOT (id in (..)", "id NOT IN (..)" ..?)

                      Kommentar


                      • #12
                        Genau da sind wir bei meinem Problem angelangt. Ich hab insgesamt 6 Dateien. Das dürfte als Schilderung reichen.
                        Höre nie auf zu versuchen. Versuche nicht aufzuhören.

                        Kommentar


                        • #13
                          Das dürfte als Schilderung reichen.
                          Das sehe ich anders
                          Wieso hast Du 6 Dateien und vor allem: bilden die dann zusammen die komplette Datenbank? Sind die bzgl. der Datensätze disjunkt?
                          Werden die in einem Scriptdurchlauf eingelesen? Tut mir leid, aber ich habe absolut keine Ahnung, was du vorhast.

                          Kommentar


                          • #14
                            Also es sind 6 Dateien. Es sind Spezifikationen von Druckern (infos und bla bla). Jede dieser einzelnen Dateien wird vom User hochgeladen und danach per Tastendruck in die Datenbank verfrachtet. D.h. wenn der "blöde" User einen neuen Drucker in die Datei "Thermodrucker.csv" einfügt, erweitert sich ja die ID und er muss es ja in allen Dateien verändern, da es fortlaufend ist.

                            Es wäre auch möglich alles in eine Datei zu packen. Aber dann würde der DAU die Übersicht verlieren.
                            Höre nie auf zu versuchen. Versuche nicht aufzuhören.

                            Kommentar


                            • #15
                              Lieber sk4r,

                              meine Glaskugel ist gerade leider verkratzt, zerbrochen, einfach weg...
                              Was ist in diesen 6 Dateien?
                              Kommt das alles in eine Tabelle? Woher sollen wir denn wissen, welche Datensätze in Deiner
                              Tabelle gelöscht werden können? Vielleicht kannst Du das mal in Worte fassen.

                              Kommentar

                              Lädt...
                              X