Mark: MySql -> csv

Hallo Ihrs,

O.K., kommt mir vor wie ein Schlag ins Gesicht; Bin ein absoluter Anfänger was MySql betrifft und habe Stunden gebraucht um mir ein Script abzukrampfen, welches mir die Daten einer Tabelle als csv sichert. Hat letztendlich auch geklappt, nur der braucht eine halbe Ewigkeit um die csv zu schreiben..., denke ich sollte jetzt einfach mal mein Script posten:

$sql="SELECT * FROM meine tabelle WHERE 1";
    $result=mysql_query($sql,$con);
    for($i=1;$i<=mysql_num_rows($result);$i++)
        {
        $ergebnis[$i]=mysql_fetch_array($result);
        $backup.=$i . ";";
        $backup.=$ergebnis[$i][dat01] . ";";
        $backup.=$ergebnis[$i][dat02] . ";";
        $backup.=$ergebnis[$i][dat03] . ";";
        $backup.=$ergebnis[$i][dat04] . "\n";
    }
    fwrite($fp, $backup);
    fclose($fp);

Geht, dauert nur unheimlich lange bis 2000 Datensätze verarbeitet sind. Ob PHPMyAdmin auch so lang braucht? Ausprobiert, innerhalb von ner Sekunde fertig..., habe irgendwie blöd ,geguckt. Habe mir dann die export.php von PHPMyAdmin angeschaut und verstehe dort als Newbie natürlich nur Bahnhof.
Kann mir vielleicht jemand eine Erklärung und Beispiel geben, oder schreiben wo's bei mir hakt?

Danke und Gruss, Mark

  1. Hi,

    O.K., kommt mir vor wie ein Schlag ins Gesicht; Bin ein absoluter Anfänger was MySql betrifft und habe Stunden gebraucht um mir ein Script abzukrampfen, welches mir die Daten einer Tabelle als csv sichert.

    Warum hast Du nicht
    SELECT ... INTO OUTFILE ...
    genommen?

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    1. Warum hast Du nicht
      SELECT ... INTO OUTFILE ...
      genommen?

      Hallo Andreas,

      weil mir als Newbie "INTO OUTFILE" noch nicht bekannt ist/war..

      »»[INTO {OUTFILE | DUMPFILE} 'file_name' export_options]

      wie müsste ich das denn jetzt umsetzen, damit auch hinterher eine csv dabei rauskommt?

      1. Und ich nochmal, Hallo ;)

        Habe jetzt mal ein wenig ausprobiert und es klappt leider nicht...

        if(!$fp=fopen("test.csv","w+"))
            {
             echo "fehler";
        }
        else
            {
            $sql="SELECT * INTO OUTFILE 'test.csv' FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' FROM meine_tabelle";
            mysql_query($sql,$con);
            fclose($fp);
        }
        Da ist die Datei ohne Inhalt und Fehlermeldungen bekomme ich auch leider keine

        Gruss, Mark

        1. Hi,

          if(!$fp=fopen("test.csv","w+"))
              {
               echo "fehler";
          }
          else
              {
              $sql="SELECT * INTO OUTFILE 'test.csv' FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' FROM meine_tabelle";
              mysql_query($sql,$con);
              fclose($fp);
          }
          Da ist die Datei ohne Inhalt und Fehlermeldungen bekomme ich auch leider keine

          Weil Du keine ausgibst - ich seh kein echo mysql_error...

          Und in die Datei kann MySQL ja nicht schreiben, weil Du die (aus welchen Gründen auch immer) schon per PHP geöffnet hast - damit ist der Schreibzugriff für andere Programme (wie z.B. den MySQL-Server) im Normalfall gesperrt.

          cu,
          Andreas

          --
          MudGuard? Siehe http://www.Mud-Guard.de/
          1. O.K., ich geb's auf. Ich frage das nxte Mal erst wieder wenn ich alles kann -> irgendwie paradox oder?

            nen schönen Tag noch

            1. O.K., ich geb's auf. Ich frage das nxte Mal erst wieder wenn ich alles kann -> irgendwie paradox oder?

              nen schönen Tag noch

              Und wieder meiner einer, hallo,

              alles können tue ich immer noch nicht, aber...:

              meine test.csv habe ich gefunden, mit Inhalt :)
              Allerdings wurde die in das Verzeichnis abgelegt wo auch die SQLDaten sind.

              Wie bekomme ich die, stattdessen, in einem von mir definierten Verzeichnis? Bitte, bitte, bitte -> schmeisst mir nicht nur Häppchen vor die Füsse. Ich brauche ewig bis ich damit was anfangen kann :(

              Gruss, Mark

              1. Hi,

                Wie bekomme ich die, stattdessen, in einem von mir definierten Verzeichnis?

                Indem Du den kompletten Pfad angibst, nicht nur den Dateinamen.

                Bitte, bitte, bitte -> schmeisst mir nicht nur Häppchen vor die Füsse. Ich brauche ewig bis ich damit was anfangen kann :(

                Aber der Lerneffekt ist größer.

                cu,
                Andreas

                --
                MudGuard? Siehe http://www.Mud-Guard.de/
                1. Hallo Andreas,

                  Indem Du den kompletten Pfad angibst, nicht nur den Dateinamen.

                  Nachdem ich mir mal überlegt habe welche Arten von Pfade es gibt habe ich eine Möglichkeit gefunden an den Pfad zu kommen, die auch funktioniert..., glaube der 6. oder 7. Versuch war's:

                  $datei=str_replace("backup.php","backup/test.csv", $_SERVER["SCRIPT_FILENAME"]);

                  Kann ich das so lassen, oder ist das eher ungeschickt?

                  Aber der Lerneffekt ist größer.

                  Und ich bilde mir immer ein, dass "ICH" ein A* bin. So kann man sich irren..., und ja: Ich habe was gelernt :)~

                  Gruss und mal wieder Danke -> Andreas