[MySQL 4.1] Datenbankinhalte ändern & verschieben

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

  • [MySQL 4.1] Datenbankinhalte ändern & verschieben

    Hallöchen...


    Zur Zeit bin ich dabei eines meiner Projekte einer Generalüberholung zu unterziehen was auch so einige Umstellungen mit sich bringt. Vor allem im MySQL-Bereich wird kräftig umgestellt. Mein Problem ist nun, dass sich in der Zeit, in der das Projekt schon läuft, über 12'000 Datensätze angesammelt haben die ich in der "neuen Version" nicht mehr so ganz brauchen kann - jedenfalls nicht mehr die kompletten Datensätze.

    Daher stelle ich mir die Frage, ob es denn Möglich ist (Möglich ist es sicherlich, nur wie <g>) zB. per Script die jeweilige Tabelle auszulesen, abzuändern und an einem neuen Ort wieder zu speichern.
    Um mal ein Bsp. zu schreiben damit es einfacher verständlich ist.

    1. Script liest Daten aus Datenbank XY1 von Tabelle AB1 aus
    2. Script ändert die Daten
    3. Script schreibt die Daten in Tabelle AB2 von Datenbank XY2


    Weiss da jemand eine Lösung?


    Besten Dank schonmal im Voraus.


    medium22

  • #2
    Du hast es doch selbst geschrieben:

    SELECT * FROM alte
    while()
    daten-bearbeiten;
    INSERT INTO neue

    Fertig.

    Kommentar


    • #3
      Hallöchen..,


      Danke.

      Aber irgendwie werd' ich da nicht so ganz schlau draus.

      Ich müsste also

      PHP-Code:
      SELCET CommenttimeuID FROM comments
      while() 
      Soweit richtig?
      Aber wie bearbeite ich die Daten dann? Denke nicht das ich das mit str_replace erledigen kann, oder doch? <grübel>



      medium22

      Kommentar


      • #4
        Wenn du uns weiterhin verheimlichst, was du wie bearbeiten willst, wirst du das nie erfahren.

        Kommentar


        • #5
          Hallöchen...




          Verzeih. <g>

          Also.., in der alten Tabelle benötige ich noch:

          Tabellenname (alt): comments
          Daten die ich noch benötige: Comment, time, uID

          Die neue Tabelle ist wesentlich grösser und in diese sollen die 3 genannten Inhalte eingefügt und die restlichen leer gelassen werden.

          Tabellenname (neu): Comments
          Dort enthalten sind: CommentID (Primärer Schlüssel), UserName, nick, Comment, age, prio, gender, mail, groupe, vsmk, perm, time

          Es soll also von
          Comment (alt) -> Comment (neu)
          time (alt) -> time (neu)
          uID (alt) -> UserName (neu)

          verschoben/kopiert werden, und alle anderen Teile der neuen Tabelle jeweils leer gelassen werden.


          Hoffe nun hab ich's genau genug beschrieben. <g>


          medium22

          Kommentar


          • #6
            Und was ist dein Problem?

            Kommentar


            • #7
              Hallöchen...



              Das ich eben genau dieses 3 Datensätze (Inhalt ca. 13.000 Datensätze) von alt nach neu verschieben/kopieren will.., aber kein Schimmer hab wie? <g>



              medium22

              PS: Verzeih, dass ich mich so doof anstelle, aber das hat seinen Grund. Ich habe das letztens schonmal versucht und dadurch eine andere Seite komplett lahm geleget weil ich etwas falsch gemacht habe.

              Kommentar


              • #8
                Schon dumm, wenn man an live-systemen rumwerkelt.

                Wenn du die inhalte also gar nicht bearbeiten willst, reicht ein INSERT INTO ... SELECT

                Kommentar


                • #9
                  Hallöchen..

                  Pfft - Mach Dich lustig über mich. <pieks>

                  Nun ja.., die Inhalte sollen so bleiben wie sie sind, aber der Name wird geändert. Mir ist klar, dass ich die in dem Sinne nicht bearbeiten muss, aber irgendwie gelingt es mir dennoch nicht - habs eben versucht.

                  PHP-Code:
                  $lesen "SELECT Comment, UserId, time FROM comments5";
                  $gelesen mysql_query($lesen);
                  while(
                  $row mysql_fetch_array($gelesen))
                      {
                      
                      
                  $eintrag "INSERT INTO Comments (Comment, UserName, time) 
                                   VALUES ('
                  $Comment', '$UserName', '$time')";
                      
                  $eintragen mysql_query($eintrag);

                      } 
                  Es werden zwar rund 13.000 Datensätze eingetragen aber ausnahmslos alle sind ohne Inhalt, also auch die 3 die ich eigentlich haben wollte fehlen.


                  <total auf Schlauch steh>


                  medium22

                  Kommentar


                  • #10
                    Junge Junge, hättest du unsere Regeln gelesen und error_reporting() E_ALL, wüsstest du dass $Comment usw. nicht definiert ist.

                    Woher soll da also ein Inhalt kommen?

                    Außerdem geht es eigentlich in einer Query. aber vielleicht ists leichter, wenn du es erstmal so machst.

                    Kommentar


                    • #11
                      Hallöchen..,


                      habs nun doch hingekriegt. :P

                      Aaaaber..., nach 329 von fast 13.000 Datensätzen erscheint folgende Fehlermeldung und es geschieht nichts weiter:
                      You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'heißes' wolle.', '30', '1147861039')' at line 2
                      Hab nun auch mal ein wenig gesucht aber keine Lösung für gefunden.

                      So schaut das Script zur Zeit aus:
                      PHP-Code:
                      error_reporting(E_ALL);

                      //Datenbankverbindung entfernt...

                      $lesen "SELECT Comment, UserId, time FROM comments5";
                      $gelesen mysql_query($lesen);
                      while(
                      $row mysql_fetch_array($gelesen))
                          {
                          
                      $Comment $row['Comment'];
                          
                      $UserName $row['UserId'];
                          
                      $time $row['time'];

                          
                      $eintrag "INSERT INTO Comments (Comment, UserName, time) 
                                       VALUES ('
                      $Comment', '$UserName', '$time')";

                              if(
                      mysql_query($eintrag) or die(mysql_error())) {

                              } 
                          } 
                      Kann es womöglich am sZ liegen oder an sonstigen Umlauten? oO


                      medium22

                      Kommentar


                      • #12
                        eher an den nicht-escape-ten hochkommata.
                        http://de3.php.net/manual/en/functio...ape-string.php

                        Kommentar


                        • #13
                          Hallöchen..


                          Ahh.. kopf@tisch

                          Hab nun einfach noch ein
                          PHP-Code:
                              $Comment str_replace("'""&prime;"$Comment); 
                          dazwischen gesetzt, nun wurden alle Inhalte kopiert.

                          Besten Dank.


                          medium22

                          Kommentar


                          • #14
                            wozu?

                            Kommentar


                            • #15
                              Hallöchen...


                              Wie wozu? Verstehe Dein Frage nun nicht ganz.



                              medium22

                              Kommentar

                              Lädt...
                              X