mysql dump einlesen

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

  • mysql dump einlesen

    Hallo an alle,

    seit 3 Tagen lese ich in Foren und kämpfe mit meinen backups. Ich erstelle einen dump und lege ihn in einem ordner auf meinem webspace ab. Nun möchte ich diesen dump wieder einlesen was ich versuche indem ich die sql datei öffne und einlese. Soweit so gut aber dann hänge ich und komme absolut nicht mehr weiter. ich wolle alles per mysql_query übergeben, aber das funktioniert so nicht. Bitte, bitte einen Rat. Seid so gut und denkt daran, das ich als Newbie den Rat nur verstehen, wenn er deutlich erklärt ist. Ich habe Stunden versucht mich durch etliche Beiträge zu wühlen, aber nichts passendes gefunden, was mir geholfen hätte. Danke vorab

    Gruß Kicky

  • #2
    bei MySQL kannst du lediglich EINEN SQL-Statement übergeben, d.h. du müßtest den eingelesen Dump-File auch zeilenweise durchgehen, wobei der CREATE-Befehl in Dump-Files ja oft mehrzeilig ausgegeben wird.

    Andere Lösung ist, dass du über Shell-Zugriff den Dump-File direkt an MySQL übergibst:
    PHP-Code:
    <?
    $cmd="mysql -uMeinUser -pMeinPasswort Datenbankname < dumpfile.sql";
    system($cmd);
    ?>

    Kommentar


    • #3
      sieht aus wie eine sql frage ... dann gehts da jetzt auch hin. erst gucken dann posten
      h.a.n.d.
      Schmalle

      http://impressed.by
      http://blog.schmalenberger.it



      Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
      ... nur ohne :-)

      Kommentar


      • #4
        sorry, natürlich muss der Pfad zum Dump-File auch stimmen oder das auszuführende Skript und der Dump-File im selben Verzeichnis liegen.

        Kommentar


        • #5
          herzlichen Dank für deine Antworten.
          Die Sache mit dem Pfad ist klaro, das hatte ich auch gleich gemacht, dennoch tut sich irgendwie nichts, ich bekomme allerdings auch keine Fehlermeldung. Ich werde noch mal weiter suchen woran es liegen kann, denn das wäre ja eine super einfache methode!

          Gruß Kicky

          Kommentar


          • #6
            Sorry, ich bin es schon wieder (

            ich habe folgendes eingegeben:

            PHP-Code:

            $cmd
            ="mysql -uxxxx -pxxxx xxxxxx < $path.$file";
            $einlesen=system($cmd);
                if(isset(
            $einlesen))echo "sichern ok"; else echo "sichern - Fehler"

            Als Antwort bekomme ich sichern ok, aber tun tut er nichts. Hast du eine Idee woran das liegen kann?

            Kommentar


            • #7
              ich würde mir den Befehl $cmd erst mal ausgeben lassen und dann von der Shell aus testen.

              und die Funktion system() wird dir so keinen vernünftigen Rückgabewert liefern. Dafür mußt du
              PHP-Code:
              system($cmd$einlesen);
              if (
              $einlesen==0) echo "sichern ok"; else echo "sichern - Fehler"
              benutzen, d.h. im zweiten Parameter wird ein Rückgabewert von system() als int gespeichert. Ist der "0", dann ist alles fein, jeder andere Wert ist mit einer Fehlermeldung gleichzusetzen.

              P.S.: die angegebene Datenbank, in welche der Dump-File eingelesen werden soll, muss existieren. Wenn dort schon Tabellen vorhanden sind, muss der Dump-File eine "DROP TABLE"-Behandlung integriert haben. sonst geht nix.

              Kommentar


              • #8
                Danke vorab,
                die Datenbank existiert und Drop table ist auch im Dumpfile.
                Nach deiner sehr verständliche Erklärung für die Rückmeldung von system() bekomme ich zumindest die Meldung, das es noch nicht funktioniert. Ist ja schon etwas, wenn auch nicht das was ich erreichen wollte. Ich werde also weiter suchen müssen.

                Gruß Kicky

                Kommentar


                • #9
                  wenn du den Befehl über die Shell ausführst, erhälst du eigentlich eine richtige Fehlermeldung, d.h. dann weißt du auch, woran es liegt...

                  Kommentar


                  • #10
                    Wer schon rot, bitte nicht böse sein das ich störe, aber
                    könnte es

                    a) daran liegen das der dump nicht einwandfrei ist oder


                    b) ich dumpe einzelne tabellen und möchte auch einzelne tabellen wieder einlesen! Kann das mein Fehler bzw. der Haken sein?


                    Gruß Kicky

                    Kommentar


                    • #11
                      a) kann der Fehler sein
                      b) nein, das ist egal. du kannst auch einzelne Tabellen mittels Dump sichern und wieder einspielen.

                      hast du die Struktur deines Dump-files geprüft?

                      z.B. sollte immer

                      DROP TABLE IF EXISTS tabellenname;

                      benutzt werden, sonst steigt MySQL gleich aus, wenn versucht wird, eine Tabelle zu droppen, die es nicht gibt.

                      Fehler gibt's auch, wenn irgendwo ein Drop fehlt und das CREATE fehlschlägt.

                      Wie gesagt, versuch erstmal dein DUMP-File über die Shell einzuspielen. Wenn das klappt, liegt der Fehler woanders.

                      P.S.: du brauchst nicht rot werden. Wenn ich kein Bock habe oder keine Zeit, dann werde ich auch nicht so schnell antworten. Dann tut's eben ein anderer. hier im Forum findet sich immer jemand, der einem hilft.

                      Kommentar


                      • #12
                        Zunächst noch mal herzlichen Dank für Deine supertolle Unterstützung. Hoffentlich schaffe ich es auch mal anderen helfen zu können. (Dafür muss ich wohl noch vieeeel lernen)
                        Ich bin mit der shell nicht wirklich klargekommen und habe daher meinen dump per copy und past in phpmyadmin eingefügt zu testzwecken. Das funktioniert einwandfrei. Dies müsste ja bedeuten, dass der dump ok ist.
                        Falls dir noch etwas dazu einfällt bin ich sehr dankbar, ich werde wohl auch weiter grübeln.

                        Gruß Kicky

                        P.S. Kann es irgendetwas mit zugriffsrechten zu tun haben? Aber ich dachte dann müsste ich fehler erhalten. Es ist nur ein normaler Webspace bei Levanzo mit PHP MYSQL etc.

                        Kommentar


                        • #13
                          ach herrje.

                          Dann kann es natürlich gut sein, dass

                          1. der Befehl "mysql" nicht gefunden wird oder du über Shell-ebene nicht ausführen darfst oder

                          2. dein PHP-User keine Leserechte für den Dump-File hat (wie wurde der erzeugt?)

                          Sollte eines von beiden zutreffen, mußt du den komplizierteren Weg gehen und den Dump-File zeilenweise abarbeiten.

                          Hast du denn für deinen Webspace-Account einen telnet-Zugang? Oder SSH?

                          Kommentar


                          • #14
                            Halloele,

                            ich fürchte ich habe nichts dergleichen. Wenn ich es hätte sollte ich es ja eigentlich wissen.

                            Kommentar


                            • #15
                              Lese und schreibrechte sind gegeben, die habe ich ja über chmot eingestellt, das funktioniert aber ich fürchte ich habe keinen shell zugriff. Ich weiss zwar nicht wie ich mich je revanchieren könnte, aber hast du noch einen Tip für das zeilenweise auslesen? Ich habe schon etliche Varianten mit for schleifen versucht, aber wohl immer irgendwo einen Fehler.

                              Gruß Kicky

                              Kommentar

                              Lädt...
                              X