Tausende SQL-Queries auf einmal?

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

  • Tausende SQL-Queries auf einmal?

    Hallo,

    ich muss eine Datenbank per php script dynamisch anpassen.
    Leider sind dies tausende an queries die ich abschicken muss.
    Der Aufruf der update.php läuft sich dann im Browser zu Tode,
    d.h. irgendwann ist er "fertig" obwohl noch Abfragen zu tätigen sind.

    Frage: Kann man die einzelnen Queries auch zusammenfassen,
    d.h. in ein grosses Textfile und dies nachher als eine Query abschicken.

    Ein nacheinanderstellen der Befehle:

    Code:
    UPDATE test_posts SET replyid='5782' WHERE replyid='3282' AND ID_FORUM='2'; 
    UPDATE test_posts SET replyid='3586' WHERE replyid='10859' AND ID_FORUM='1';
    (Auszug, sind in der Praxis 1000e Befehle)
    gibt einen Syntax error

    Tips?

    Gruss,
    Stefan
    Gruss,
    Stefan

  • #2
    deine queries, wie du sie angegeben hast, kann man nicht zusammenfassen.

    aber es wirkt sicherlich wunder, wenn man sich vorher über seine db gedanken macht. was hast du denn mit dén ganzen updates vor?
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      1000 solche Query im PMA ist kein Problem, es geht ruckzuck < 1s.
      Irgendwas machst du falsch.

      Kommentar


      • #4
        warum das ganze?

        Hi,

        Danke für die Antwort.

        Warum?
        Ganz einfach. Ich habe ein php forum programmiert,
        welches schon ein paar mal im einsatz ist.
        Nun sollen neue Funktionen usw. eingebaut werden und
        ausserdem hat sich herausgestellt, dass manche Tabellen
        vom System her falsch designt waren (war damals noch Anfänger).
        (<- nun bin ich besserer Anfänger lol)

        Also bleibt mir fast nix anderes übrig, als die Struktur upzudaten.
        Das ist kein Problem. Nur hier muss ich halt auch die Daten selbst
        (sind halt schon tausende Datensätze - sprich Posts etc. - in dem Forum) an die neue Struktur anpassen.

        In diesem Konkreten Fall: vorher gab es für jedes Forum eine eigene Tabelle. Es ist aber besser, alle Foren in eine grosse Tabelle "_posts"
        zusammenzufassen. Da sich die IDs (=auto_increment) dabei ändern
        muss ich auch die ReplyIDs (Antworten auf andere Posts) anpassen
        damit diese wieder auf die richtigen Posts zeigen.

        Das ganze muss man ja nur einmalig machen.

        Gruss,

        Stefan
        Gruss,
        Stefan

        Kommentar


        • #5
          PMA?

          Ok.

          @asp2php:

          Ok, auch auf die Gefahr hin, mich zu blamieren: Was ist PMA?

          Ich mache diese Queries per PHP.
          Hier ein Auszug des Teils der so lange dauert:

          PHP-Code:
          while (list ($oldid,$id) = each($ids))
              {
              
          $sql2="UPDATE ".TABLE_POSTS." SET replyid='$id' WHERE replyid='$oldid' AND ID_FORUM='$forum'; \n";
              
          $res2=mysql_query($sql2);
              } 
          Wobei das array $ids eben tausende Einträge hat.
          Ich muss das ganze in der Schleife aufrufen.

          Oder kann man das besser lösen?

          Gruss,
          Stefan
          Gruss,
          Stefan

          Kommentar


          • #6
            Re: PMA?

            Original geschrieben von Beyond
            Ok, auch auf die Gefahr hin, mich zu blamieren: Was ist PMA?
            phpMyAdmin
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Re: PMA?

              Original geschrieben von Beyond

              PHP-Code:

                  $sql2
              ="UPDATE ".TABLE_POSTS." SET replyid='$id' WHERE replyid='$oldid' AND ID_FORUM='$forum'; \n"
              1. die xxxID sind alle Zahlen oder? also weg mit den umschliessenden
              '', damit erhöhst du die Abarbeitungsgeschwindigkeit des SQL-Servers,
              da keine implizite Typenkonvertierungen vorgenommen werden müssen.

              2. Semikolon und \n am Ende haben in einem T-SQL-String nichts zu suchen.

              3. mysql_error() hilft dir immer bei Fehlersuche

              Kommentar


              • #8
                Re: Re: PMA?

                ....
                also weg mit den umschliessenden
                '', damit erhöhst du die Abarbeitungsgeschwindigkeit des SQL-Servers,
                da keine implizite Typenkonvertierungen vorgenommen werden müssen.
                ...
                Danke!

                ...
                2. Semikolon und \n am Ende haben in einem T-SQL-String nichts zu suchen.
                ...
                Klar. Das war nur ein Test um die Strings aneinanderzureihen.
                Gruss,
                Stefan

                Kommentar


                • #9
                  Aha ... nach PMA ist's jetzt T-SQL ... ?! ... wat denn nu ... ?!
                  carpe noctem

                  [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                  [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                  Kommentar


                  • #10
                    "t-sql" ist die neueste version von t-offline
                    Kissolino.com

                    Kommentar


                    • #11
                      Original geschrieben von goth
                      Aha ... nach PMA ist's jetzt T-SQL ... ?! ... wat denn nu ... ?!
                      nennt man SQL-Commands in MySQL nicht Transact-SQL? Denn rein ANSI 92 sind sie nicht!

                      Kommentar


                      • #12
                        Transact-SQL ist doch eigentlich nur so ein Mickysoft Scheiss ... isn't it ... ?!
                        carpe noctem

                        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                        Kommentar


                        • #13
                          Hahaha, nein, T-SQL ist eine Erweiterung von ANSI-SQL, ursprünglich von Sybase entwickelt und hat sich mit der Zeit entartet und überall eingebürgert. Der eigentliche wahre T-SQL ist nur bei Sybase zu finden. Jedoch MS, Oracle und Co. nennen ihre extensions mittlerweile auch T-SQL. Tja, wenn du was nicht weisst, sollst du dich nicht darüber lustig machen
                          Zuletzt geändert von asp2php; 26.05.2004, 23:13.

                          Kommentar


                          • #14
                            UPDATE Problem. Anderer Ansatz?

                            Hallo,

                            ich habe neulich zu diesem Problem schon ein post erstellt, aber hier noch mal meine Tabelle, die mir Kopfzerbrechen bereitet. Vielleicht
                            gibt es ja noch einen anderen, besseren Ansatz.

                            Ich habe mehrere Tabellen zusammengefasst zu einer Grossen (musste sein!).

                            Vorher (z.b. Forum 1):
                            id replyid text ....
                            1 0 Frage 1 (zur Verdeutlichung)
                            2 1 Antwort auf 1
                            3 0 Frage 2
                            4 1 Antwort auf 1

                            Dies waren also mehrere Foren, jede mit eigener Tabelle.
                            Nun habe ich diese zusammenkopert und mit einer neuen ID_MSG
                            (auto_inc) versehen. Dazu kam noch eine ID_FORUM für die Differenzierung.

                            Tabelle "posts" (neu)
                            ID_MSG oldid replyid text ID_FORUM
                            1000 1 0 Frage1 1
                            1001 2 1 Antwort1 1
                            1002 3 0 Frage2 1
                            1003 4 1 Antwort1 1

                            Ok. nun stimmen die replyids nicht mehr. Also muss ich diese anpassen.

                            Ich habe dies bisher in php in einer Schleife realisiert:

                            PHP-Code:
                            while (list ($forum,$name) = each($forums))
                                {
                                echo 
                            "<BR>Forum: $forum-$name Step 1/2";
                                
                            $sql1="SELECT ID_MSG,oldid FROM "TABLE_POSTS ." WHERE ID_FORUM='$forum'";
                                
                            $res1=sqlsend($sql1,$lk);
                                while (list (
                            $id,$oldid) = mysql_fetch_array($res1))
                                    {
                                    
                            $ids[$oldid]=$id;
                                    }
                                
                            reset ($ids);
                                echo 
                            "<BR>Forum: $forum-$name Step 2/2";
                                
                            $sql2=" ";
                                while (list (
                            $oldid,$id) = each($ids))
                                    {
                                    
                            $sql2="UPDATE ".TABLE_POSTS." SET replyid=$id WHERE replyid=$oldid AND ID_FORUM=$forum AND parent=1;";
                                    
                            $res2=mysql_query($sql2);
                                    }
                                     } 
                            Frage (endlich ):
                            Kann man dies über eine geignete SQL-Frage nicht besser lösen?
                            Ich habe den Verdacht, dass ich mit Kanonen auf Spatzen schiesse
                            Gruss,
                            Stefan

                            Kommentar


                            • #15
                              Re: UPDATE Problem. Anderer Ansatz?

                              Original geschrieben von Beyond
                              ich habe neulich zu diesem Problem schon ein post erstellt, [...]
                              und warum macht du dann einen neuen thread auf?

                              *ZUSAMMENFÜHR*
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Kommentar

                              Lädt...
                              X